八大排序
稳定性:指的是经过排序后,值相同的元素保持原来顺序中的相对位置不变.
二分查找是对数级别
冒泡排序 O(n^2) 最差情况O(n^2) 最好情况O(n) 稳定
直接选择排序 O(n^2) 最差情况O(n^2) 最好情况O(n^2) 不稳定
每次选出最小值(先从第一个索引位置 然后和后面元素依次比较 如果后面的小于第一个位置就交换)
直接插入排序(打扑克牌) O(n^2) 最差情况O(n^2) 最好情况O(n) 稳定
希尔排序(插入排序的升级版)(根据间隔数排序初始间隔N/2 最后间隔为1)
O(n^1.3) 最差情况O(n^2) 最好情况O(n) 不稳定
快速排序(一次找到某个数据的位置 其实就是这个数据左边都小于自己 右边都大于直接 ) 分而治之 去头中尾的中位数为枢纽 或者第一个数为枢纽
O(nlog2n) 最差情况O(n^2) 最好情况O(nlog2n) 不稳定
就打扑克(直接插入)冒泡 归并 基数稳定 其他都不稳定
归并排序(分而治之) 一分分一半排序
O(nlog2n) 最差情况O(nlog2n) 最好情况O(nlog2n) 稳定
堆排序特点:不稳定,最坏,最好,平均时间复杂度均为O(nlogn)堆是一个近似完全二叉树的结构,且满足子结点的键值或索引总是小于(或者大于)它的父节点。这里采用最大堆方式:位于堆顶的元素总是整棵树的最大值,每个子节点的值都比父节点小,堆要时刻保持这样的结构,所以一旦堆里面的数据发生变化,要对堆重新进行一次构建。
基数排序 稳定,时间复杂度为O (nlog®m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。
基数排序是一种非比较型整数排序算法,其原理是将数据按位数切割成不同的数字,然后按每个位数分别比较,在类似对百万级的电话号码进行排序的问题上,使用基数排序效率较高