排序算法核心思想总结
emmm 写的比较简单,不适合新手看。适合已经手写过一遍的人复习用。
冒泡排序
核心思想
- 两个循环让最小的数一直往上移动
- 最小的,第二小的。。。循环到最后就已经排好序了
选择排序
核心思想
- 找出数组中最小的一个数
- 与数组中第一个交换
- 以此类推,找第二个。。。循环到整个数组结束
插入排序
核心思想
- 把数组看做左右两份。左边是有序的,右边是无序的。
- 从左向右遍历右数组(一开始左数组长度为1,右数组长度为N-1),如果右数组的第一个数小于左数组的最后一个数(从小到大排序),则说明需要把这个数插入到左数组的相应位置中。左数组的部分值需要右移。
- 这样一次操作以后左数组长度++,右数组长度–
- 循环操作直到整个数组变成左数组
希尔排序(插入排序的优化版)
核心思想
- 假设数组长度为N,引入一个间隔因数M。则数组可以被分作N/M份(假设数组为[1,2,3,4]。N=4,设M=2。则数组可以被分作两份:[1,3],[2,4];并不是[1,2]和[3,4]])
- 对于被分割之后的数组A(1),A(2)…A(N/M)分别进行插入