这里会给大家介绍一些常用的排序算法思想,算是上课摸鱼之后的一些总结吧,同时也是加强一些印象。
稳定性
在开始之前,先讲一个概念,稳定性是指:若在待排序数组中存在相等的两个关键字 A和A1,A=A1,并且A排在A1之前,在经过排序算法之后输出的排序结果中仍有A在A1之前排列的话,那么我们称这个排序算法具有稳定性。反之,则没有稳定性。(个人理解)
稳定的排序算法有:起泡排序,直接插入排序,归并排序
不稳定排序算法有:希尔排序,直接选择排序,快速排序
直接插入排序
- 首先将待排数组R分为有序区和无序区,那么起始的时候R[0]是有序区,剩下部分为无序区。
- 将R[1]与有序区最后一位(目前是R[0])进行比较,如果R[1]小于有序区的最后一位,那么用R[1]与有序区最后一位的前一位进行比较,如果R[1]大于有序区最后一位,那么将R[1]插入到有序区该位之后。扩大有序区。
- 直至将无序区全部扫描完后结束算法。
图示如下
要不今天就到这里吧,明日再更