详情请查看这篇:https://jiyiren.github.io/2016/11/24/csort/
Android图形化排序:https://github.com/jiyiren/JYSort
C 语言实现的排序算法
- 快速排序(Fast Sort)
- 堆排序(Heap Sort)
- 归并排序(Merge Sort)
- 插入排序(Insert Sort)
- 冒泡排序(Bubble Sort)
- 选择排序(Select Sort)
发明者:1962年霍尔
- 最好:O(nlogn)
- 平均:O(nlogn)
- 最坏:O(n^2)
- 空间:O(logn)
- 不稳定
gcc fastsort.c -o fastsort
./fastsort
发明者:罗伯特·弗洛伊德
- 最好:O(nlogn)
- 平均:O(nlogn)
- 最坏:O(nlogn)
- 空间:O(1)
- 不稳定
gcc heapsort.c -o heapsort
./heapsort
发明者:约翰·冯·诺伊曼
- 最好:O(nlogn)
- 平均:O(nlogn)
- 最坏:O(nlogn)
- 空间:O(n)
- 稳定
gcc mergesort.c -o mergesort
./mergesort
- 最好: O(n)
- 平均: O(n^2)
- 最坏: O(n^2)
- 空间: O(1)
- 稳定
gcc insertsort.c -o insertsort
./insertsort
- 最好: O(n)
- 平均: O(n^2)
- 最坏: O(n^2)
- 空间:O(1)
- 稳定
gcc bubblesort.c -o bubblesort
./bubblesort
- 最好:O(n^2)
- 平均:O(n^2)
- 最坏:O(n^2)
- 空间: O(1)
- 不稳定
gcc selectsort.c -o selectsort
./selectsort
-
若从空间复杂度来考虑:首选堆排序,其次是快速排序,最后是归并排序。
-
若从稳定性来考虑,应选取归并排序,因为堆排序和快速排序都是不稳定的。
-
若从平均情况下的排序速度考虑,应该选择快速排序。