排序-插入排序

Posted lyear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序-插入排序相关的知识,希望对你有一定的参考价值。

插入排序

由第一个元素开始,将其看做一个有序数组,随后元素插入至前面被视为有序的数组中,元素插入后组成的数组仍保持有序,直到原数组全部元素有序。

编码实现

排序-插入排序

结果验证

排序-插入排序

复杂度

该算法操作次数约为 : (n-1)+(n-2)+(n-3)+(n-4)+...+1 = n*(n-1)/2 

平均时间复杂度为O(n^2),平均空间复杂度为O(1)。

稳定性

插入排序是元素逐个与前面的元素比较发生交换,当元素相同时位置不会发生改变,因此插入排序是稳定排序。

优化思路

由于插入排序在内循环中,会发生多次相邻交换,因此我们可以借助局部变量保存待插入的值,通过赋值方式来减少交换操作次数。

优化后的插入排序实现

借助局部变量current来存储待插入的值,如待插入的值小于前面的元素则直接使用前面的元素值赋值覆盖后一个元素,直到前方元素的值不再小于待插入值,再将current赋值至目标位置,从而达到减少相邻位置交换操作的目的。
测试

由以上可见,优化后插入排序实现略微胜于优化前的实现。

以上是关于排序-插入排序的主要内容,如果未能解决你的问题,请参考以下文章

排序算法 插入排序(直接插入排序半插入排序希尔排序)

直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚

算法插入排序——希尔排序+直接插入排序

第三篇,插入排序算法:直接插入排序希尔排序

java排序之插入排序(直接插入排序和希尔排序)

排序算法之插入排序(直接插入希尔排序)