将无序的序列变成一个有序的序列
一、插入排序
边插入边排序,保证随时都是有序的
1.直接插入排序
复制(为哨兵)插入的元素,记录后移,查找插入位置,插入正确位置
2.二分插入排序
将目标值放在哨兵位置,利用折半的思想,来寻找插入的位置
3.希尔插入排序
将整个待排记录序列分成若干个子序列,再进行直接插入排序
分成不同的间隔,将颜色相同的序列进行一组排序,一次排序移动位置较大,跳跃式地接近排序的最终位置,最后一次只需少量移动,增量序列必须是递减的,最后一个必须是1,增量序列必须是互质的。
二、交换排序
1.冒泡排序
过程(像是水中重的物质沉底,轻的物质上浮):
算法,设置一个flag为标志:
2.快速排序
利用递归的思想,找一个中心点为参考,比它小的,放在前面,比它大的放在后面,一直进行同一个操作。将空的位置补充比它小的元素,有点拆西墙补东墙的感觉。不稳定的排序
三、选择排序
1.简单选择
原理:每一次比较取最小值,与当前位置的值进行 互换,
比如说,第一次,08是最小的,然后08和21的位置互换
然后从第二个位置,发现16是最小的那么16和25进行互换
以此类推
2.堆排序
就是一个二叉树按照大小进行的,对堆按照大小进行调整和建立。
四、归并排序
将两个相邻的子序列归并为一个序列
五、基数排序
分配+收集
将其化成几个箱子,按照个位百位十位这样分