排序算法
插入排序:
如输入的数据已预先排好,运行时间会大大缩减,流程从p=1开始往p–的方向去比较,如果小于(正序)则将其交换位置。
希尔排序:
分组length/2,(0,length/2)是否交换,底层原理想插入排序。但效率比插入排序更快
堆排序:
大顶堆(升序),小顶堆(降序) 完全二叉树
归并排序:
分而治之的思想
8, 4, 5, 7, 1, 3, 6, 2 —> 8,4,5,7 1,3,6,2 —> 8,4 5,7 1,3 6,2 —> 4,8 5,7 1,3 2,6 —>4,5,7,8 1,2,3,6 —>1,2,3,4,5,6,7,8
快速排序:
轴值 选择策略:第一个元素,最后一个元素,中间元素,随机元素
22,23,49,47,29,12,68,33
假如选择最后一个为轴值为33
先从头找到一个比轴值大的49
将轴值的位置改为49
得到
22,23,49,47,29,12,68,49
在从轴值往前找一个比轴值小的找到12,得到
22,23,12,47,29,12,68,49 —>22,23,12,47,29,47,68,49—>22,23,12,29,29,47,68,49—>22,23,12,29,33,47,68,49
选择排序:
每次都选择最大的与数组后面进行交换
冒泡排序:
相邻的进行比较比后面的大就行进行交换,