1,冒泡排序(Bubble Sort)
- 定义:对比相邻的元素,将大的放后面,每次循环会确定最大的数的位置
- 时间复杂度:
最佳情况:T(n) = O(n)
最差情况:T(n) = O(n2)
平均情况:T(n) = O(n2)
2、选择排序(Selection Sort)
-定义:每次循环找到最大或最小值,放到新的系列中。
-时间复杂度:都是O(n2)
3,插入排序(Insertion Sort)
-定义:第一个元素认为是有序队列,循环后面的数据插入到正确位置即可
-时间复杂度:
最佳情况:T(n) = O(n)
最坏情况:T(n) = O(n2)
平均情况:T(n) = O(n2)
4,希尔排序(Shell Sort)
- 定义:希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序
-
图解:
- 时间复杂度:都是O(nlog2 n)
5,归并排序(Merge Sort)
- 定义:该算法是采用分治法(Divide and Conquer)的一个非常典型的应用
-
图解:
- 时间复杂度:
最佳情况:T(n) = O(n)
最差情况:T(n) = O(nlogn)
平均情况:T(n) = O(nlogn)
6,快速排序(Quick Sort)
- 定义:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
-
图解:
- 时间复杂度:
最佳情况:T(n) = O(nlogn)
最差情况:T(n) = O(n2)
平均情况:T(n) = O(nlogn)
7,堆排序(Heap Sort)
- 定义:利用大顶堆的特性,每次拿到最大值。
- 步骤:1,构建大顶堆,2,选择顶,并与第0位置元素交换,3,重新构建大顶堆,重复第二步。
- 时间复杂度:都是O(nlogn)
8,计数排序(Counting Sort)
- 限定:计数排序要求输入的数据必须是有确定范围的整数
- 定义:非比较排序,速度快于任何比较排序算法,核心是将数字和数字的下标综合起来处理,最终的值是通过下标计算处理的。
- 时间复杂度:O(n+k),k为数据的范围
9,桶排序(Bucket Sort)
- 定义:它将要排的数据分到多个有序的桶里,每个桶里的数据再单独排序,再把每个桶的数据依次取出,即可完成排序
-时间复杂度:
最佳情况:T(n) = O(n+k)
最差情况:T(n) = O(n+k)
平均情况:T(n) = O(n2)
10,基数排序(Radix Sort)
- 定义:基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。
- 步骤:按各位排序,按十位排序,按百位排序....(排序可用计数排序)
-
图解:
- 时间复杂度:O (nlog(r)m)