直接插入排序

2021-02-17 18:17

阅读:705

标签:有序   image   temp   位置   sort   span   alt   简单的   图片   

概念

直接插入排序是一种最简单的排序方法,排序过程为:先将第一个元素看作是只有一个元素的有序子表,然后从第二个元素开始,将待排序元素依次插入到前面有序的子表中,直到全部排序完毕。在整个过程中,前面的元素是已经排序号的列表,后面的元素为待排序处理。

 

如下排序是将列表{ 7,3,5,4,6 }升序的排序过程。

技术图片

代码实现

 1 void InsertSort(vectorint> &nums)
 2 {
 3     //nums.insert(nums.begin(), 0);//插入一个哨兵
 4     int i, j;
 5     int len = nums.size();
 6     for (i = 1; i )
 7     {
 8         int temp = nums[i];
 9         for (j = i - 1; j >= 0; j--)
10         {
11             if (temp  nums[j])
12                 nums[j + 1] = nums[j];////在有序列表中比soldier值大的元素后移
13             else
14                 break;//soldier大于有序表中的最后一位则不需要移动
15         }
16         nums[j + 1] = temp;//在正确位置上插入
17     }
18 }

性能

最好:有序,O(n)

最坏:逆序,比较(n+2)(n-1)/2   移动(n+4)(n-1)/2

平均:O(n^2)

稳定性:稳定

 

直接插入排序

标签:有序   image   temp   位置   sort   span   alt   简单的   图片   

原文地址:https://www.cnblogs.com/jpzhu/p/12696918.html


评论


亲,登录后才可以留言!