-
-
Notifications
You must be signed in to change notification settings - Fork 5.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rationalize the two different implementations of heap sort #164
Comments
@cclauss It seems that both the implementations are exactly the same algorithmically. |
It would be cool to have a benchmark because then we would have proof that they are the same and have the same performance for multiple datasets. Hint: I doubt it. Such a benchmark could be extended to do side-by-side performance tests of all 19 of our sort algorithms. Benchmarks are cool and they have the power to push our contributors to optimize. |
Also, there's something more we can do. At least BogoSort has an |
;-) Are lines 10-13 needed? Update: Proven with doctests in #171 |
If the loop starts with |
Does the loop ever execute at all? |
Yes. It's kind of an extension for the Array object. That's why we can use it directly. |
Our test cases are when Now comment out lines 10-13 and run again. You will get the exact same results because the loop never runs. Lines 10-13 can be deleted. |
As discussed at #164 (comment) Also related to add doctests as discussed in #142
* added DecimalToHex * added luhn's checksum algorithm * deleted checksums * Update keyFinder.js modified used the suitable identifier for the variables * Update keyFinder.js 1. modified the identifiers and used the suitable identifiers for the variables 2. leave the loop when a key is match and found to increase the speed of searching in this stage of development 3. return the key number if founded, return 0 if found nothing * Update keyFinder.js a sub-function is used to assist the keyfinder to find the key * Update keyFinder.js Finally, there are several changes in the function keyFinder(str) that make it works well * Update keyFinder.js Add some key words to the wordbank to increase the chance of the matching. * fixed and added test cases * fixed alert * Add wiggle sort * adding Graph data structure * Added SHA-1 and SHA-256 hashing algorithms (TheAlgorithms#83) * Added SHA-1 and SHA-256 hashing algorithms * Fixed typos in comments * Removed redundant unsigned integer casting * Added Jump Search to readme.md * Added JumpSearch algorithm * Update jumpSearch.js * Added Semicolon to Avoid Auto Semicolon Insertion This fixes a [recommendation on lgtm](https://lgtm.com/projects/g/TheAlgorithms/Javascript/snapshot/9fe2ca0492e0813c5e5486498c6b53a00c4a61e3/files/Sorts/bucketSort.js?sort=name&dir=ASC&mode=heatmap) * Fixed Whitespace, Operators, and Quotes to Comply with JSLint I modified the whitespace in the files and changed single quotes to double quotes. I also changed some `==` and `!=` operators to `===` and `!==` to comply with JSLint. * Create find_lcm.js - Created find_lcm.js - Created maths folder * Create average_mean.js * Create factorial.js This program calculates and displays the factorial for a user-input number. * Create abs.js This script calculates absolute value. * Made "use strict" Global * Made "use strict" Global & Made JSLint Happy * Kadane Algo is added * Issue fixed * GitHub Action to test Javascript * Update nodejs.yml * cd linear-algebra-javascript * Create update_directory_md.yml * updating DIRECTORY.md * update_directory_md.yml: Remove GH Actions workaround * Graph Theory * Delete Graphs * Graph * Dijkstra Smallest Path * DijkstraSmallestPath after fixing some errors. * Topological Sort directed graphs * correcting name of file * updating DIRECTORY.md * doublylinkedlist * add-doublylinkedlist * add-doublylinkedlist * change in Directory.md * updating DIRECTORY.md * update (#1) * Graph Theory * Delete Graphs * Graph * Dijkstra Smallest Path * DijkstraSmallestPath after fixing some errors. * Topological Sort directed graphs * correcting name of file * updating DIRECTORY.md * doublylinkedlist * add-doublylinkedlist * add-doublylinkedlist * change in Directory.md * updating DIRECTORY.md Co-authored-by: Nur69 <60115902+Nur69@users.noreply.github.com> Co-authored-by: Stepfen Shawn <m18824909883@163.com> Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Co-authored-by: hmizz <hamza.chabchoub@medtech.tn> * Contributing guidelines * npx standard --fix * Update CONTRIBUTING.md * Update README.md * Update CONTRIBUTING.md Co-authored-by: Christian Clauss <cclauss@me.com> * Update CONTRIBUTING.md Co-authored-by: Christian Clauss <cclauss@me.com> * Update CONTRIBUTING.md Co-authored-by: Christian Clauss <cclauss@me.com> * Update CONTRIBUTING.md Co-authored-by: Christian Clauss <cclauss@me.com> * Update CONTRIBUTING.md Co-authored-by: Christian Clauss <cclauss@me.com> * Update CONTRIBUTING.md Co-authored-by: Christian Clauss <cclauss@me.com> * Update CONTRIBUTING.md Co-authored-by: Christian Clauss <cclauss@me.com> * Update CONTRIBUTING.md Co-authored-by: Christian Clauss <cclauss@me.com> * Update CONTRIBUTING.md Co-authored-by: Christian Clauss <cclauss@me.com> * Update CONTRIBUTING.md Co-authored-by: Christian Clauss <cclauss@me.com> * Update CONTRIBUTING.md Co-authored-by: Christian Clauss <cclauss@me.com> * Update CONTRIBUTING.md Co-authored-by: Christian Clauss <cclauss@me.com> * Update CONTRIBUTING.md Co-authored-by: Christian Clauss <cclauss@me.com> * Update CONTRIBUTING.md Co-authored-by: Christian Clauss <cclauss@me.com> * Add standard to our testing Run in allow failures mode until the non-compliant files are fixed. * npx standard || true * Update README.md * Fixing non compliant files (Ciphers, Conversions and Data Structures) * Update nodejs.yml * Data Structures/Graph * sorts/ * fix broken link * search/ * search/ (TheAlgorithms#143) * factorial.js: Standardjs fixes Related to TheAlgorithms#139 * /* global alert, prompt */ * find_lcm.js: Standardjs fixes * abs.js: abs_val() --> absVal() for standardjs (TheAlgorithms#144) * find_lcm.js: Standardjs fixes (TheAlgorithms#146) * Update factorial.js * SHA256.js: Standardjs fixes * factorial.js: /* global prompt */ * Update nodejs.yml * DijkstraSmallestPath.js: Standardjs fixes (TheAlgorithms#147) * Fixed typo in CONTRIBUTING.md file (TheAlgorithms#148) * Fixed typo in CONTRIBUTING.md file * Update CONTRIBUTING.md Co-authored-by: vinayak <itssvinayak@gmail.com> * math/ * sort/ * Add Pascal's triangle. (TheAlgorithms#149) * Add Pascal's triangle. * Update pascalTriangle.js * Update pascalTriangle.js Co-authored-by: vinayak <itssvinayak@gmail.com> * updating DIRECTORY.md * Javascript/linear-algebra-javascript * Update nodejs.yml * Update nodejs.yml * Update nodejs.yml * Trailing space ;-) * Update README.md * adding an implementation of a queue using 2 stacks (TheAlgorithms#137) * adding an implementation of a queue using 2 stacks * Update QueueUsing2Stacks.js Co-authored-by: vinayak <itssvinayak@gmail.com> * updating DIRECTORY.md * Create palindrome algorithm (TheAlgorithms#134) * Create palindrome algorithm * Update Palindrome.js Co-authored-by: vinayak <itssvinayak@gmail.com> * updating DIRECTORY.md * Create pull_request_template.md (TheAlgorithms#153) * Create pull_request_template.md * Update pull_request_template.md * Update pull_request_template.md * Update pull_request_template.md * Update pull_request_template.md * Update README.md * Update CONTRIBUTING.md * added hcf finding algorithm (TheAlgorithms#104) * added hcf finding algorith * Update and rename find_hcf.js to FindHcf.js Co-authored-by: vinayak <itssvinayak@gmail.com> * updating DIRECTORY.md * Create Fibonacci.js (TheAlgorithms#133) * Create Fibonacci.js * Update Fibonacci.js Co-authored-by: vinayak <itssvinayak@gmail.com> * updating DIRECTORY.md * Javascript/Math: editing file name * updating DIRECTORY.md * Update nodejs.yml * Update README.md * editing file names * updating DIRECTORY.md * Quick Select Search (TheAlgorithms#131) * HeapSort algorithm * Create QuickSelect.js * Algorithm to reverse a string. * Update ReverseString.js * Update Heapsort.js * Update QuickSelect.js Co-authored-by: vinayak <itssvinayak@gmail.com> * updating DIRECTORY.md * Update README.md * Max heap implementation (TheAlgorithms#157) * Added MaxHeap implementation * Added MaxHeap implementation * Added MaxHeap implementation * Added MaxHeap implementation * Delete package-lock.json * Delete .gitignore * updating DIRECTORY.md * Renaming files according to naming convention (TheAlgorithms#158) * updating DIRECTORY.md * Fibonacci without recursion added (TheAlgorithms#159) * changes made * Update Fibonacci.js * fib Co-authored-by: vinayak <itssvinayak@gmail.com> * updating DIRECTORY.md * format files * updating DIRECTORY.md * Add good_filepaths function in workflow script * updating DIRECTORY.md * Add md_prefix and print_path functions * Add reverse words (TheAlgorithms#162) * add reverse words * Update ReverseWords.js * Update ReverseWords.js Co-authored-by: vinayak <itssvinayak@gmail.com> * updating DIRECTORY.md * Add build_directory_md * GitHub Action nodejs.yml upgrade to Node.js 14 (TheAlgorithms#165) * JavaScript, not Javascript (TheAlgorithms#166) * Rename script.js to UpdateDirectory.js * updating DIRECTORY.md * run: node UpdateDirectory.js * run: node .github/workflows/UpdateDirectory.js * updating DIRECTORY.md * BogoSort.js: Simplify Array.isSorted() and add doctests As discussed at TheAlgorithms#164 (comment) Also related to add doctests as discussed in TheAlgorithms#142 * node -e "doctest('Sorts/BogoSort.js', {})" * doctest --module Sorts Sorts/BogoSort.js * Update nodejs.yml * Update nodejs.yml * npx doctest Sorts/BogoSort.js || true * node_modules/doctest Sorts/BogoSort.js || true * npx doctest Sorts/BogoSort.js * updating DIRECTORY.md * Ensure that build fail on bad test * updating DIRECTORY.md * Ready for review * Add doctest to BucketSort.js * updating DIRECTORY.md * Update nodejs.yml * updating DIRECTORY.md * npx doctest Sorts/BogoSort.js Sorts/BucketSort.js * updating DIRECTORY.md * updating DIRECTORY.md * Add Graph BFS algorithm (TheAlgorithms#169) * Add Graph BFS algorithm * updating DIRECTORY.md * Fix failing tests * updating DIRECTORY.md * Fix further failing tests Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> * updating DIRECTORY.md * Re-orgainze files and folders in the repository (TheAlgorithms#172) * Re-orgainze files and folders in the repository * updating DIRECTORY.md Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Co-authored-by: Alex Brown <opti.jawsome@gmail.com> Co-authored-by: Wan Cheuk Lun <winsonrich@gmail.com> Co-authored-by: Mohit Sharma <msvbs98@gmail.com> Co-authored-by: Akarsh <akarsh.satija@gmail.com> Co-authored-by: naor <naor2205@gmail.com> Co-authored-by: Anup Kumar Panwar <1anuppanwar@gmail.com> Co-authored-by: Ravi Patel <ravi.patel1245@gmail.com> Co-authored-by: mavroian <mavflorin@gmail.com> Co-authored-by: Libin Yang <szuyanglb@outlook.com> Co-authored-by: PatOnTheBack <51241310+PatOnTheBack@users.noreply.github.com> Co-authored-by: lakshyabatman <lakshya.khera@gmail.com> Co-authored-by: Christian Clauss <cclauss@me.com> Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Co-authored-by: Nur69 <60115902+Nur69@users.noreply.github.com> Co-authored-by: Stepfen Shawn <m18824909883@163.com> Co-authored-by: hmizz <hamza.chabchoub@medtech.tn> Co-authored-by: vinayak <itssvinayak@gmail.com> Co-authored-by: Juliano Nunes <julianomarquesnunes@gmail.com> Co-authored-by: Muhammad Awais <aawais.nu@gmail.com> Co-authored-by: Nour B <56294154+nourrrrrrrr@users.noreply.github.com> Co-authored-by: hmizz <60817898+hmizz@users.noreply.github.com> Co-authored-by: Novojit Saha <55886194+redfly1@users.noreply.github.com> Co-authored-by: Samarth Jain <53353139+samjain2907@users.noreply.github.com> Co-authored-by: Satzyakiz <40039258+Satzyakiz@users.noreply.github.com> Co-authored-by: Sahil Bansal <shlbnsl843@gmail.com> Co-authored-by: Abhi Ramani <abhiramani3@gmail.com> Co-authored-by: John Law <johnlaw.po@gmail.com>
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
Please reopen this issue once you commit the changes requested or make improvements on the code. Thank you for your contributions. |
As discussed at TheAlgorithms/JavaScript#164 (comment) Also related to add doctests as discussed in #142
As discussed at TheAlgorithms/JavaScript#164 (comment) Also related to add doctests as discussed in #142
As discussed at TheAlgorithms/JavaScript#164 (comment) Also related to add doctests as discussed in #142
As discussed at TheAlgorithms/JavaScript#164 (comment) Also related to add doctests as discussed in #142
As discussed at TheAlgorithms/JavaScript#164 (comment) Also related to add doctests as discussed in #142
We have two different implementations of heap sort. Can we build a benchmark to prove which one is faster or better than the other? Benchmark against small datasets, large datasets, and empty datasets. It is OK to keep both if they have different strengths and weaknesses. If there is a clear winner, let's delete the other one.
The text was updated successfully, but these errors were encountered: