数据结构与算法之比较排序算法总结
介绍: 比较算法大致可以分为两种,一种为比较算法,另一种为非比较算法。 比较算法有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序,希尔排序。 非比较算法有:计数排序,基数排序,桶排序。 https://gitee.com/linqiankun/Utils/tree/v3.0/ 时间复杂度: 排序方法 最好情况 平均情况 最差情况 辅助空间 稳定性 冒泡排序 n n^2 n^2 1 yes 选择排序 n^2 n^2 n^2 1 no 插入排序 n n^2 n^2 1 yes 归并排序 nlogn nlogn nlogn n yes 堆排序 nlogn nlogn nlogn 1 no 快速排序 nlogn nlogn n^2 1 no 希尔排序 n^1.3 nlogn~n^2 n^2 logn~n no 比较算法: 冒泡排序 普通冒泡排序 冒泡排序是一种极为简单的排序算法。通过循环反复的遍历数组中的元素,依次比较相邻的两个元素。如果不满足排序规则,就进行位置交换,直到没有元素需要交换位置,排序完成。 这个算法会慢慢的使元素按照需要的顺序浮出来。 时间复杂度为:O(n)~O(n^2)~O(n^2) 冒泡排序运行顺序: 比较相邻元素,按照排序规则进行位置交换。 对每一对相邻元素进行第一步的操作,操作完之后,队伍最后会是满足条件的数。循环体的内层循环走完一圈。