Sorting: Difference between revisions

From Algorithm Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
Line 12: Line 12:
== Parameters ==  
== Parameters ==  


n: size of list
$n$: size of list


== Table of Algorithms ==  
== Table of Algorithms ==  
Line 22: Line 22:
|-
|-


| [[Naive sorting (Comparison Sorting Sorting)|Naive sorting]] || 1940 || $O( )||O({1})$ (in-situ) || Exact || Deterministic ||   
| [[Naive sorting (Comparison Sorting Sorting)|Naive sorting]] || 1940 || $O(n^{2})||O({1})$ (in-situ) || Exact || Deterministic ||   
|-
|-
| [[Selection Sort (Comparison Sorting Sorting)|Selection Sort]] || 1962 || $O( )||O({1})$ (in-situ) || Exact || Deterministic ||   
| [[Selection Sort (Comparison Sorting Sorting)|Selection Sort]] || 1962 || $O(n^{2})||O({1})$ (in-situ) || Exact || Deterministic ||   
|-
|-
| [[Merge Sort (Comparison Sorting Sorting)|Merge Sort]] || 1945 || $O(n logn)||O(n)$ || Exact || Deterministic ||   
| [[Merge Sort (Comparison Sorting Sorting)|Merge Sort]] || 1945 || $O(n \log n)||O(n)$ || Exact || Deterministic ||   
|-
|-
| [[Bubble Sort (Comparison Sorting Sorting)|Bubble Sort]] || 1956 || $O( )||O({1})$ (in-situ) || Exact || Deterministic ||   
| [[Bubble Sort (Comparison Sorting Sorting)|Bubble Sort]] || 1956 || $O(n^{2})||O({1})$ (in-situ) || Exact || Deterministic ||   
|-
|-
| [[Intro Sort (Comparison Sorting Sorting)|Intro Sort]] || 1997 || $O(n logn)||O(logn)$ || Exact || Deterministic || [https://onlinelibrary.wiley.com/doi/abs/10.1002/%28SICI%291097-024X%28199708%2927%3A8%3C983%3A%3AAID-SPE117%3E3.0.CO%3B2-%23 Time]
| [[Intro Sort (Comparison Sorting Sorting)|Intro Sort]] || 1997 || $O(n \log n)||O(logn)$ || Exact || Deterministic || [https://onlinelibrary.wiley.com/doi/abs/10.1002/%28SICI%291097-024X%28199708%2927%3A8%3C983%3A%3AAID-SPE117%3E3.0.CO%3B2-%23 Time]
|-
|-
| [[Heap Sort (Comparison Sorting Sorting)|Heap Sort]] || 1964 || $O(n logn)||O({1})$ (in-situ) || Exact || Deterministic || [https://www.bibsonomy.org/bibtex/2f485e4ea9a877871b59ab503151a7f10/bjoern Time]
| [[Heap Sort (Comparison Sorting Sorting)|Heap Sort]] || 1964 || $O(n \log n)||O({1})$ (in-situ) || Exact || Deterministic || [https://www.bibsonomy.org/bibtex/2f485e4ea9a877871b59ab503151a7f10/bjoern Time]
|-
|-
| [[Counting Sort (Non-Comparison Sorting Sorting)|Counting Sort]] || 1954 || O(n+k) || O(n+k) || Exact || Deterministic || [http://bitsavers.org/pdf/mit/whirlwind/R-series/R-232_Information_Sorting_in_the_Application_of_Electronic_Digital_Computers_to_Business_Operations_May54.pdf Time]
| [[Counting Sort (Non-Comparison Sorting Sorting)|Counting Sort]] || 1954 || O(n+k) || O(n+k) || Exact || Deterministic || [http://bitsavers.org/pdf/mit/whirlwind/R-series/R-232_Information_Sorting_in_the_Application_of_Electronic_Digital_Computers_to_Business_Operations_May54.pdf Time]
Line 40: Line 40:
| [[Radix Sort (Non-Comparison Sorting Sorting)|Radix Sort]] || 1940 || O(wn) || O(w+n) || Exact || Deterministic ||   
| [[Radix Sort (Non-Comparison Sorting Sorting)|Radix Sort]] || 1940 || O(wn) || O(w+n) || Exact || Deterministic ||   
|-
|-
| [[Tree sort (Comparison Sorting Sorting)|Tree sort]] || 1962 || $O(n logn)||O(n)$ || Exact || Deterministic || [http://www.neubert.net/FSOIntro.html Time]
| [[Tree sort (Comparison Sorting Sorting)|Tree sort]] || 1986 || $O(n \log n)||O(n)$ || Exact || Deterministic || [https://link.springer.com/chapter/10.1007/978-1-349-08147-9_4 Time]
|-
|-
| [[Quick Sort (Comparison Sorting Sorting)|Quick Sort]] || 1961 || $O( )||O(logn)$ || Exact || Deterministic || [https://apps.dtic.mil/dtic/tr/fulltext/u2/740110.pdf Time] & [https://academic.oup.com/comjnl/article/5/1/10/395338?login=true Space]
| [[Quick Sort (Comparison Sorting Sorting)|Quick Sort]] || 1961 || $O(n^{2})||O(\log n)$ || Exact || Deterministic || [https://apps.dtic.mil/dtic/tr/fulltext/u2/740110.pdf Time] & [https://academic.oup.com/comjnl/article/5/1/10/395338?login=true Space]
|-
|-
| [[Tim Sort (Comparison Sorting Sorting)|Tim Sort]] || 2002 || O(nlogn) || O(n) || Exact || Deterministic ||   
| [[Tim Sort (Comparison Sorting Sorting)|Tim Sort]] || 2002 || O(nlogn) || O(n) || Exact || Deterministic ||   
Line 48: Line 48:
| [[Cube Sort Parallel Implementation (Comparison Sorting Sorting)|Cube Sort Parallel Implementation]] || 1992 || O(nlogn) || O(n) || Exact || Parallel || [https://www.sciencedirect.com/science/article/pii/0196677492900166?via%3Dihub Time]
| [[Cube Sort Parallel Implementation (Comparison Sorting Sorting)|Cube Sort Parallel Implementation]] || 1992 || O(nlogn) || O(n) || Exact || Parallel || [https://www.sciencedirect.com/science/article/pii/0196677492900166?via%3Dihub Time]
|-
|-
| [[Shell Sort; (Shell) (Comparison Sorting Sorting)|Shell Sort; (Shell)]] || 1959 || $O( )||O({1})$ (in-situ) || Exact || Deterministic || [https://dl.acm.org/citation.cfm?doid=368370.368387 Time]
| [[Shell Sort (Shell) (Comparison Sorting Sorting)|Shell Sort (Shell)]] || 1959 || $O(n^{2})||O({1})$ || Exact || Deterministic || [https://dl.acm.org/citation.cfm?doid=368370.368387 Time]
|-
|-
| [[Shell Sort; (Frank & Lazarus) (Comparison Sorting Sorting)|Shell Sort; (Frank & Lazarus)]] || 1960 || O(n1.5) || O(1) (in-situ) || Exact || Deterministic || [https://dl.acm.org/citation.cfm?doid=366947.366957 Time]
| [[Shell Sort (Frank & Lazarus) (Comparison Sorting Sorting)|Shell Sort (Frank & Lazarus)]] || 1960 || O(n1.5) || O(1) || Exact || Deterministic || [https://dl.acm.org/citation.cfm?doid=366947.366957 Time]
|-
|-
| [[Shell Sort; (Pratt) (Comparison Sorting Sorting)|Shell Sort; (Pratt)]] || 1971 || $O(n log² n)||O({1})$ (in-situ) || Exact || Deterministic || [https://apps.dtic.mil/sti/pdfs/AD0740110.pdf Time]
| [[Shell Sort (Pratt) (Comparison Sorting Sorting)|Shell Sort (Pratt)]] || 1971 || $O(n \log^{2} n)||O({1})$ || Exact || Deterministic || [https://apps.dtic.mil/sti/pdfs/AD0740110.pdf Time]
|-
|-
| [[Shell Sort; (Sedgewick) (Comparison Sorting Sorting)|Shell Sort; (Sedgewick)]] || 1986 || O(n1.33) || O(1) (in-situ) || Exact || Deterministic || [https://www.sciencedirect.com/science/article/pii/0196677486900015?via%3Dihub Time]
| [[Shell Sort (Sedgewick) (Comparison Sorting Sorting)|Shell Sort (Sedgewick)]] || 1986 || O(n1.33) || O(1) || Exact || Deterministic || [https://www.sciencedirect.com/science/article/pii/0196677486900015?via%3Dihub Time]
|-
|-
| [[Bitonic Merge Sort Parallel Implementation (Comparison Sorting Sorting)|Bitonic Merge Sort Parallel Implementation]] || 1968 || $O(log² n)||O({1})$? || Exact || Parallel || [https://epubs.siam.org/doi/abs/10.1137/0218014 Time]
| [[Bitonic Merge Sort Parallel Implementation (Comparison Sorting Sorting)|Bitonic Merge Sort Parallel Implementation]] || 1968 || $O(\log^{2} n)||O({1})$ || Exact || Parallel || [https://epubs.siam.org/doi/abs/10.1137/0218014 Time]
|-
|-
| [[Thorup's Sorting Algorithm (Comparison Sorting Sorting)|Thorup's Sorting Algorithm]] || 2002 || $O(n loglogn)||O(n)$ || Exact || Deterministic || [https://www.sciencedirect.com/science/article/pii/S0196677402912113?via%3Dihub Time]
| [[Thorup's Sorting Algorithm (Comparison Sorting Sorting)|Thorup's Sorting Algorithm]] || 2002 || $O(n \log \log n)||O(n)$ || Exact || Deterministic || [https://www.sciencedirect.com/science/article/pii/S0196677402912113 Time & Space]
|-
|-
| [[Naive sorting (Non-Comparison Sorting Sorting)|Naive sorting]] || 1940 || $O( )||O({1})$ (in-situ) || Exact || Deterministic ||   
| [[Naive sorting (Non-Comparison Sorting Sorting)|Naive sorting]] || 1940 || $O(n^{2})||O({1})$ || Exact || Deterministic ||   
|-
|-
| [[Flash Sort (Non-Comparison Sorting Sorting)|Flash Sort]] || 1998 || O(n2) || O(n) || Exact || Deterministic || [http://www.neubert.net/FSOIntro.html Time]
| [[Flash Sort (Non-Comparison Sorting Sorting)|Flash Sort]] || 1998 || O(n2) || O(n) || Exact || Deterministic || [http://www.neubert.net/FSOIntro.html Time] & [http://www.neubert.net/FSOIntro.html, Space]
|-
|-
| [[Bead Sort (Non-Comparison Sorting Sorting)|Bead Sort]] || 2002 || O(n) || O(n2) || Exact || Deterministic || [https://web.archive.org/web/20170809110409/https://www.cs.auckland.ac.nz/~jaru003/research/publications/journals/beadsort.pdf Time]
| [[Bead Sort (Non-Comparison Sorting Sorting)|Bead Sort]] || 2002 || O(n) || O(n2) || Exact || Deterministic || [https://web.archive.org/web/20170809110409/https://www.cs.auckland.ac.nz/~jaru003/research/publications/journals/beadsort.pdf Time]
Line 68: Line 68:
| [[Burst Sort (Non-Comparison Sorting Sorting)|Burst Sort]] || 2004 || O(wn) || O(wn) || Exact || Deterministic || [https://dl.acm.org/citation.cfm?doid=1005813.1041517 Time]
| [[Burst Sort (Non-Comparison Sorting Sorting)|Burst Sort]] || 2004 || O(wn) || O(wn) || Exact || Deterministic || [https://dl.acm.org/citation.cfm?doid=1005813.1041517 Time]
|-
|-
| [[Spreadsort (Non-Comparison Sorting Sorting)|Spreadsort]] || 2002 || $O(n*log n)||O(n)$? || Exact || Deterministic || [https://www.semanticscholar.org/paper/The-Spreadsort-High-performance-General-case-Ross/41f5b49e9843b2d98b6b22a84924dae5761e6e52 Time]
| [[Spreadsort (Non-Comparison Sorting Sorting)|Spreadsort]] || 2002 || $O(n \log n)||O(n)$? || Exact || Deterministic || [https://www.semanticscholar.org/paper/The-Spreadsort-High-performance-General-case-Ross/41f5b49e9843b2d98b6b22a84924dae5761e6e52 Time]
|-
|-
| [[Odd Even Sort Parallel  Implementation (Comparison Sorting Sorting)|Odd Even Sort Parallel  Implementation]] || 1972 || O(n2) || O(1) || Exact || Parallel || [https://www.semanticscholar.org/paper/Parallel-Neighbor-Sort-(or-the-Glory-of-the-Habermann/bc7b6efb99aae6225239425747fd0169a51f30ce Time]
| [[Odd Even Sort Parallel  Implementation (Comparison Sorting Sorting)|Odd Even Sort Parallel  Implementation]] || 1972 || O(n2) || O(1) || Exact || Parallel || [https://www.semanticscholar.org/paper/Parallel-Neighbor-Sort-(or-the-Glory-of-the-Habermann/bc7b6efb99aae6225239425747fd0169a51f30ce Time]
Line 79: Line 79:


[[File:Sorting - Time.png|1000px]]
[[File:Sorting - Time.png|1000px]]
== Space Complexity Graph ==
[[File:Sorting - Space.png|1000px]]
== Time-Space Tradeoff ==
[[File:Sorting - Pareto Frontier.png|1000px]]

Latest revision as of 10:04, 28 April 2023

Description

A sorting algorithm is an algorithm that puts elements of a list in a certain order

Related Problems

Subproblem: Comparison Sorting, Non-Comparison Sorting

Related: Non-Comparison Sorting

Parameters

n: size of list

Table of Algorithms

Name Year Time Space Approximation Factor Model Reference
Naive sorting 1940 O(n2) O(1) (in-situ) Exact Deterministic
Selection Sort 1962 O(n2) O(1) (in-situ) Exact Deterministic
Merge Sort 1945 O(nlogn) O(n) Exact Deterministic
Bubble Sort 1956 O(n2) O(1) (in-situ) Exact Deterministic
Intro Sort 1997 O(nlogn) O(logn) Exact Deterministic Time
Heap Sort 1964 O(nlogn) O(1) (in-situ) Exact Deterministic Time
Counting Sort 1954 O(n+k) O(n+k) Exact Deterministic Time
Bucket Sort 1940 O(n²) O(n) Exact Deterministic
Radix Sort 1940 O(wn) O(w+n) Exact Deterministic
Tree sort 1986 O(nlogn) O(n) Exact Deterministic Time
Quick Sort 1961 O(n2) O(logn) Exact Deterministic Time & Space
Tim Sort 2002 O(nlogn) O(n) Exact Deterministic
Cube Sort Parallel Implementation 1992 O(nlogn) O(n) Exact Parallel Time
Shell Sort (Shell) 1959 O(n2) O(1) Exact Deterministic Time
Shell Sort (Frank & Lazarus) 1960 O(n1.5) O(1) Exact Deterministic Time
Shell Sort (Pratt) 1971 O(nlog2n) O(1) Exact Deterministic Time
Shell Sort (Sedgewick) 1986 O(n1.33) O(1) Exact Deterministic Time
Bitonic Merge Sort Parallel Implementation 1968 O(log2n) O(1) Exact Parallel Time
Thorup's Sorting Algorithm 2002 O(nloglogn) O(n) Exact Deterministic Time & Space
Naive sorting 1940 O(n2) O(1) Exact Deterministic
Flash Sort 1998 O(n2) O(n) Exact Deterministic Time & Space
Bead Sort 2002 O(n) O(n2) Exact Deterministic Time
Burst Sort 2004 O(wn) O(wn) Exact Deterministic Time
Spreadsort 2002 O(nlogn) O(n)? Exact Deterministic Time
Odd Even Sort Parallel Implementation 1972 O(n2) O(1) Exact Parallel Time
Spaghetti Sort Parallel Implementation 1984 O(n) O(1) auxiliary? per processor? Exact Parallel Time

Time Complexity Graph

Sorting - Time.png