http://www.javashuo.com/article/p-hmcedzbw-r.html算法
冒泡排序(Bubble Sort)数组
- 比较相邻的元素。若是第一个比第二个大,就交换它们两个,直到最后

- 算法分析
- 最佳状况:T(n) = O(n)
- 这里注意,若是发现没有交换,证实已是排好序了
- 第一次比较就没有出现交换,因此是 O(n)
- 最差状况:T(n) = O(n2)
- 平均状况:T(n) = O(n2)
选择排序(Selection Sort)ui
- 第一个分别与后面的进行比较,每次把最大(最小)的投出来

- 算法分析
- 最佳状况:T(n) = O(n2)
- 最差状况:T(n) = O(n2)
- 平均状况:T(n) = O(n2)
插入排序(Insertion Sort).net
- 每次拿出一个与前面挨着的比较,发现第一个比本身大(小)的插入,前面的序列都是有序序列

- 算法分析
- 最佳状况:T(n) = O(n)
- 最坏状况:T(n) = O(n2)
- 平均状况:T(n) = O(n2)
希尔排序(Shell Sort)3d
- 改进插入排序
- “缩小增量排序”或者“递减增量排序”
- 算法分析
- 最佳状况:T(n) = O(nlog2 n)
- 最坏状况:T(n) = O(nlog2 n)
- 平均状况:T(n) =O(nlog2n)
- 时间复杂度:
- 基于插入排序的两点性质而来:
- 对一个“几乎”已经排好序的无序序列,插入排序的效率是很高的,能够达到线性排序的效率
归并排序(Merge Sort)blog
- 把长度为n的输入序列分红两个长度为n/2的子序列;
- 对这两个子序列分别采用归并排序;
- 将两个排序好的子序列合并成一个最终的排序序列。
- 算法分析
- 最佳状况:T(n) = O(n)
- 最差状况:T(n) = O(nlogn)
- 平均状况:T(n) = O(nlogn)
快速排序(Quick Sort)排序
- 选择中间数,把大雨的丢右边,小于的丢左边

- 算法分析
- 最佳状况:T(n) = O(nlogn)
- 最差状况:T(n) = O(n2)
- 平均状况:T(n) = O(nlogn)
堆排序(Heap Sort)递归
-

- 算法分析
- 最佳状况:T(n) = O(nlogn)
- 最差状况:T(n) = O(nlogn)
- 平均状况:T(n) = O(nlogn)
计数排序(Counting Sort)内存
- 有肯定范围的数
- 申请最大数长度的数组

- 算法分析
- 当输入的元素是n 个0到k之间的整数时,它的运行时间是 O(n + k)。
- 计数排序不是比较排序,排序的速度快于任何比较排序算法。
- 因为用来计数的数组C的长度取决于待排序数组中数据的范围
- 这使得计数排序对于数据范围很大的数组,须要大量时间和内存。
- 最佳状况:T(n) = O(n+k)
- 最差状况:T(n) = O(n+k)
- 平均状况:T(n) = O(n+k)
桶排序(Bucket Sort)get
-
桶排序是计数排序的升级版。
-
桶排序最好状况下使用线性时间O(n),
-
最佳状况:T(n) = O(n+k)
-
平均状况:T(n) = O(n+k)
-
最差状况:T(n) = O(n2)
基数排序(Radix Sort)
- 基数排序也是非比较的排序算法,对每一位进行排序,从最低位开始排序,复杂度为O(kn),为数组长度,k为数组中的数的最大的位数;
- 算法分析
- 最佳状况:T(n) = O(n * k)
- 最差状况:T(n) = O(n * k)
- 平均状况:T(n) = O(n * k)