![微型计算机系统原理及应用:国产龙芯处理器的软件和硬件集成(实训篇)](https://wfqqreader-1252317822.image.myqcloud.com/cover/856/47379856/b_47379856.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.3.1 插入排序的原理
插入排序算法也是一种常见的排序算法,其基本思想是:将需要排序的数据分为有序和无序两部分,排序的每一步将无序部分的数据插入前面已经排好序的有序部分,直到插完所有数据元素为止。
在实现插入排序算法时,每次从无序部分中取出一个元素与有序部分中的元素从后向前依次进行比较,并找到合适的位置将该元素插到有序部分。
假设6个要排序的数据元素为2、3、5、9、4和7。下面以该排序过程中的其中一个步骤为例,说明插入排序算法的具体实现过程。在插入排序过程中,6个数据元素中的有序部分为(2、3、5、9),无序部分为(4,7),需要将无序部分的数据元素4插入有序部分,具体过程如下。
(1)原始的数组元素排列顺序如下:
![](https://epubservercos.yuewen.com/18E949/26764082801595206/epubprivate/OEBPS/Images/44102_29_1.jpg?sign=1739325759-Jwl71tyl1mA771Z3c0fN0Bg4iW2NgaIX-0-614299450083631a4a190d60c01438d8)
其中,带有阴影的数据元素表示有序部分,不带阴影的数据元素表示无序部分。
(2)在无序部分挑出要插入有序部分的数据元素4,将要插入的数据元素4与该数据元素左边最近的有序部分的元素进行比较。由于4 < 9,因此数据元素9向后移动,而数据元素4向前移动:
![](https://epubservercos.yuewen.com/18E949/26764082801595206/epubprivate/OEBPS/Images/44102_29_2.jpg?sign=1739325759-b9y0XI6huCqmq7UucZBa7I8a8RS7gGsU-0-2edd0e0098a7991042e6a5b5c5f928fb)
(3)将要插入的数据元素4与该数据元素左边最近的有序部分的数据元素5进行比较。由于4 < 5,因此数据元素5向后移动,而数据元素4继续向前移动:
![](https://epubservercos.yuewen.com/18E949/26764082801595206/epubprivate/OEBPS/Images/44102_29_3.jpg?sign=1739325759-BI7sZAPuPEBX5u87cC0t5LJI0xVESDat-0-2444f819c8145e610a82a676f5816f12)
(4)将要插入的数据元素4与该数据元素左边最近的有序部分的数据元素3进行比较。由于4 > 3,因此不需要再向前比较,将数据元素4插入当前位置:
![](https://epubservercos.yuewen.com/18E949/26764082801595206/epubprivate/OEBPS/Images/44102_29_4.jpg?sign=1739325759-XG3ksKlDHCpplmsH5BgK8EDYIhYIED5g-0-67d249f5fd84e499ca3b818491699ede)
此时,有序部分的数据元素由开始的(2、3、5、9)变成了(2、3、4、5、9)。