标签:有序 image temp 位置 sort span alt 简单的 图片
概念
直接插入排序是一种最简单的排序方法,排序过程为:先将第一个元素看作是只有一个元素的有序子表,然后从第二个元素开始,将待排序元素依次插入到前面有序的子表中,直到全部排序完毕。在整个过程中,前面的元素是已经排序号的列表,后面的元素为待排序处理。
如下排序是将列表{ 7,3,5,4,6 }升序的排序过程。
代码实现
1 void InsertSort(vector<int> &nums) 2 { 3 //nums.insert(nums.begin(), 0);//插入一个哨兵 4 int i, j; 5 int len = nums.size(); 6 for (i = 1; i < len; 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