排序算法中还有一个重要的排序就是插入排序,话不多,范范老师带领各位同学直接了解下什么是插入排序!

插入排序的思想:初始化时,有序区域的只有一个元素,其余元素都是属于无序区域的,那么每次我们从无序区域依次抽取一个元素,用该元素和自己的有序区域的元素一一比较,如果有序区域的元素大于该无序区域的元素,则该有序区域的元素向后移动一位,让该无序区域的元素插入进来,此时该无序区域的元素插入后变为有序区域的元素;如果有序区域的元素小于该无序区域的元素,那么位置不变,此时该无序区域的元素也变为有序区域的元素。

具体举例说明:

如下图所示,我们创建一个无序的列表,如下图所示:

排序算法——插入排序_插入排序

初始化默认列表的第0位的元素3属于有序区域(即红色区域代表是有序区域,白色区域代表是无序区域),此时我们从白色区域抽取无序区域位于列表第1位的元素4,此时将元素3和元素4进行比较发现3<4,此时元素3不发生位移,同时元素4加入有序区域,如下图所示:

排序算法——插入排序_插入排序_02

此时我们接着从白色区域抽取无序区域位于列表的第2位元素5,此时元素5和元素4比较,发现4<5,此时元素4和元素3不发生位移,同时元素5加入有序区域,如下图所示:

排序算法——插入排序_插入排序_03

此时我们接着从白色区域抽取无序区域位于列表的第3位元素1,此时元素1分别和元素5 元素4 元素3比较,发现元素1都比他们小,此时元素3/4/5都向右移动一位,将列表的第0位位置空出来,此时让元素1插入到该第0位位置上,此时元素1加入有序区域,如下图所示:

排序算法——插入排序_插入排序_04此时我们接着从白色区域抽取无序区域位于列表的第4位元素2,此时元素2分别和元素5 元素4 元素3 元素1比较,发现元素5/4/3比它大,而元素1比它小,此时元素3/4/5向右移动一位将列表的第1位空出来,而元素1的位置保持不变,此时元素2加入到有序区域,如下图所示:

排序算法——插入排序_插入排序_05

最后我们接着从白色区域抽取无序区域位于列表的第5位元素7,此时元素7和元素5比较发现7>5,所以此时不发生位置位移,同时元素7加入到有序区域,至此插入排序结束,如下图所示:

排序算法——插入排序_排序算法_06

接下来我们通过代码来实现插入排序:

排序算法——插入排序_排序算法_07

代码运行结果如下:

排序算法——插入排序_插入排序_08