1.直接插入排序
其复杂度 为 o(n^2)
第一个n是其遍历 第二次是在第一次的遍历的基础上,每次拿第一次遍历的元素和前面排序好元素对比,然后插入。
2.希尔排序
其复杂度 为 o(n^2)
使用gap 进行对换, 每次对换玩都 将gap折半。
3.简单选择排序
是在于 选择这个动作
选择最小元素 (n) n次选择最小元素,所以是复杂度是 o(n^2),替换最前面的元素.
4.堆排序
堆的本质是一个二叉树,一个特殊的二叉树,分为大顶堆和小顶堆。表现出相反的特质。
小顶堆,是所有的元素节点关键值都小于其左右节点的元素的关键值。
大顶推,是所有的元素节点关键值都大于其左右节点的元素的关键值。
如何使用堆进行排序?
从小到大使用小顶推。
1.取出小顶推根元素,作为排序后的第一个元素。并将最后一个元素替换到根元素。
2.重新调整顺序,达到满足小顶堆的性质。
3.重复 1-2 知道全部元素完成。
优点:事件复杂度主要消耗在 遍历取出 + 小堆调整上。
缺点:建立的过程比较复杂。
5.冒泡排序
十分简单的排序,直接左右对比,大的往后交换,直到最后一个元素。
1.n次去遍历
2.每次遍历左右对比,交换,大的靠后。
所以是典型的 o(n^2)算法
6.快速排序
使用基准值+分组
1.组里面找个基准值,小左,大右。
2.拆分成组。
3.重复 1-2.