一. 稳定的排序
- 冒泡排序(bubble sort)— O(n²)
- 插入排序(insertion sort)—O(n²)
- 鸡尾酒排序(cocktail sort)—O(n²)
- 桶排序(bucket sort)—O(n²);需要O(k)额外空间
- 计数排序(counting sort)—O(n+k);需要 O(n+k)额外空间
- 归并排序(merge sort)—O(nlog n);需要O(n)额外空间
- 原地归并排序—O(nlog {2}n)如果使用最佳的现在版本
- 二叉树排序(binary tree sort)— O(nlog n)期望时间;O(n²)最坏时间;需要 O(n)额外空间
- 鸽巢排序(pigeonhole sort)— O(n+k);需要O(k)额外空间
- 基数排序(radix sort)—O(nk);需要O(n)额外空间
- 侏儒排序(gnome sort)—O(n²)
- 图书馆排序(library sort)— O(nlog n)期望时间;O(n²)最坏时间;需要(1+E)n额外空间
- 块排序(block sort)—O(nlog n)
二.不稳定的排序
- 选择排序(selection sort)—O(n²)
- 希尔排序(shell sort)— O(nlog {2}n)如果使用最佳的现在版本
- clover排序算法(Clover sort)— O(n)期望时间,O(n²)最坏情况
- 梳排序 O(nlog n)
- 堆排序(heap sort)—O(nlog n)
- 平滑排序(smooth sort)— O(nlog n)
- 快速排序(quick sort)— O(nlog n)期望时间,O(n²)最坏情况;对于大的、随机数列表一般相信是最快的已知排序
- 内省排序(introsort)—O(nlog n)
- 耐心排序(patience sort)—O(nlog n+k)最坏情况时间,需要额外的O(n+k)空间,也需要找到最长的递增子序列(longest increasing subsequence)
文章出处:https://zh.wikipedia.org/wiki/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95