====================== Unsorted Random Unique ====================== N = 100 ALGORITHM MOVES COMPARES MILLISECONDS Insertion sort 2,872 2,872 1 Shellsort suboptimal 612 829 0 Shellsort Knuth 623 717 0 Heap sort 809 1,248 0 Merge sort array 1,344 542 1 Merge sort linked list 836 539 1 Quicksort suboptimal 604 833 0 Quicksort optimal 734 1,037 0 N = 1,000 ALGORITHM MOVES COMPARES MILLISECONDS Insertion sort 244,145 244,145 9 Shellsort suboptimal 11,899 15,389 1 Shellsort Knuth 12,789 14,423 2 Heap sort 11,500 21,026 3 Merge sort array 19,952 8,686 4 Merge sort linked list 11,695 8,698 4 Quicksort suboptimal 7,398 13,253 2 Quicksort optimal 8,902 14,581 2 N = 10,000 ALGORITHM MOVES COMPARES MILLISECONDS Insertion sort 24,938,024 24,938,027 66 Shellsort suboptimal 208,719 264,932 12 Shellsort Knuth 216,421 237,534 11 Heap sort 148,032 292,306 3 Merge sort array 267,232 120,452 9 Merge sort linked list 150,402 120,405 19 Quicksort suboptimal 90,072 169,657 5 Quicksort optimal 103,822 185,437 9 N = 100,000 ALGORITHM MOVES COMPARES MILLISECONDS Insertion sort 2,498,716,446 2,498,716,456 5,302 Shellsort suboptimal 3,555,121 4,234,246 40 Shellsort Knuth 3,642,419 3,902,676 37 Heap sort 1,814,889 3,756,304 35 Merge sort array 3,337,856 1,536,610 32 Merge sort linked list 1,836,662 1,536,665 39 Quicksort suboptimal 1,054,598 2,126,071 13 Quicksort optimal 1,204,092 2,195,775 15 ============= Sorted Unique ============= N = 100 ALGORITHM MOVES COMPARES MILLISECONDS Insertion sort 0 99 0 Shellsort suboptimal 0 503 0 Shellsort Knuth 0 342 0 Heap sort 887 1,340 0 Merge sort array 1,344 356 0 Merge sort linked list 613 316 0 Quicksort suboptimal 400 5,150 0 Quicksort optimal 400 980 0 N = 1,000 ALGORITHM MOVES COMPARES MILLISECONDS Insertion sort 0 999 0 Shellsort suboptimal 0 8,006 0 Shellsort Knuth 0 5,457 0 Heap sort 12,204 21,993 0 Merge sort array 19,952 5,044 0 Merge sort linked list 7,929 4,932 0 Quicksort suboptimal 4,000 501,500 1 Quicksort optimal 4,000 12,987 0 N = 10,000 ALGORITHM MOVES COMPARES MILLISECONDS Insertion sort 0 9,999 0 Shellsort suboptimal 0 120,005 0 Shellsort Knuth 0 75,243 1 Heap sort 156,953 304,386 1 Merge sort array 267,232 69,008 1 Merge sort linked list 94,605 64,608 1 Quicksort suboptimal 40,000 50,015,000 48 Quicksort optimal 40,000 163,631 0 N = 100,000 ALGORITHM MOVES COMPARES MILLISECONDS Insertion sort 0 99,999 0 Shellsort suboptimal 0 1,500,006 4 Shellsort Knuth 0 967,146 4 Heap sort 1,900,851 3,882,389 12 Merge sort array 3,337,856 853,904 17 Merge sort linked list 1,115,021 815,024 29 Quicksort suboptimal 400,000 5,000,150,000 4,857 Quicksort optimal 400,000 1,968,946 6 ===================== Reverse Sorted Unique ===================== N = 100 ALGORITHM MOVES COMPARES MILLISECONDS Insertion sort 5,049 4,950 0 Shellsort suboptimal 516 668 0 Shellsort Knuth 420 500 0 Heap sort 713 1,125 0 Merge sort array 1,344 316 0 Merge sort linked list 653 356 0 Quicksort suboptimal 400 5,150 0 Quicksort optimal 504 980 1 N = 1,000 ALGORITHM MOVES COMPARES MILLISECONDS Insertion sort 500,499 499,500 1 Shellsort suboptimal 9,072 11,716 0 Shellsort Knuth 6,855 8,550 0 Heap sort 10,312 19,406 0 Merge sort array 19,952 4,932 0 Merge sort linked list 8,041 5,044 0 Quicksort suboptimal 4,000 501,500 1 Quicksort optimal 5,004 12,987 0 N = 10,000 ALGORITHM MOVES COMPARES MILLISECONDS Insertion sort 50,004,999 49,995,000 49 Shellsort suboptimal 124,592 172,578 0 Shellsort Knuth 93,666 120,190 1 Heap sort 136,693 277,845 1 Merge sort array 267,232 64,608 0 Merge sort linked list 99,005 69,008 1 Quicksort suboptimal 40,000 50,015,000 41 Quicksort optimal 50,004 163,631 0 N = 100,000 ALGORITHM MOVES COMPARES MILLISECONDS Insertion sort 5,000,049,999 4,999,950,000 5,219 Shellsort suboptimal 1,655,808 2,244,585 7 Shellsort Knuth 1,091,006 1,533,494 4 Heap sort 1,697,431 3,608,434 12 Merge sort array 3,337,856 815,024 19 Merge sort linked list 1,153,901 853,904 12 Quicksort suboptimal 400,000 5,000,150,000 4,461 Quicksort optimal 500,004 1,968,946 4 ========== All Zeroes ========== N = 100 ALGORITHM MOVES COMPARES MILLISECONDS Insertion sort 0 99 0 Shellsort suboptimal 0 503 0 Shellsort Knuth 0 342 0 Heap sort 198 294 0 Merge sort array 1,344 356 0 Merge sort linked list 613 316 0 Quicksort suboptimal 838 638 0 Quicksort optimal 838 938 0 N = 1,000 ALGORITHM MOVES COMPARES MILLISECONDS Insertion sort 0 999 0 Shellsort suboptimal 0 8,006 0 Shellsort Knuth 0 5,457 0 Heap sort 1,998 2,994 0 Merge sort array 19,952 5,044 0 Merge sort linked list 7,929 4,932 0 Quicksort suboptimal 11,876 9,876 0 Quicksort optimal 11,876 12,876 0 N = 10,000 ALGORITHM MOVES COMPARES MILLISECONDS Insertion sort 0 9,999 0 Shellsort suboptimal 0 120,005 0 Shellsort Knuth 0 75,243 0 Heap sort 19,998 29,994 0 Merge sort array 267,232 69,008 1 Merge sort linked list 94,605 64,608 1 Quicksort suboptimal 149,226 129,226 0 Quicksort optimal 149,226 159,226 1 N = 100,000 ALGORITHM MOVES COMPARES MILLISECONDS Insertion sort 0 99,999 0 Shellsort suboptimal 0 1,500,006 4 Shellsort Knuth 0 967,146 2 Heap sort 199,998 299,994 1 Merge sort array 3,337,856 853,904 26 Merge sort linked list 1,115,021 815,024 32 Quicksort suboptimal 1,830,060 1,630,060 6 Quicksort optimal 1,830,060 1,930,060 7