一、插入类排序
1.直接插入排序
思想:将第i个插入到前i-1个中的适当位置
时间复杂度:T(n) = O(n²)。
空间复杂度:S(n) = O(1)。
稳定性:稳定排序。
如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。
所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定
哨兵有两个作用:
① 进人查找(插入位置)循环之前,它保存了R[i]的副本,使不致于因记录后移而丢失R[i]的内容;
② 它的主要作用是:在查找循环中"监视"下标变量j是否越界。一旦越界(即j=0),因为R[0].可以和自己比较,循环判定条件不成立使得查找循环结束,从而避免了在该循环内的每一次均要检测j是否越界(即省略了循环判定条件"j>=1")
public void insertSort(int[] array){ for(int i=1;i<array.length;i++)//第0位独自作为有序数列,从第1位开始向后遍历 { if(array[i]<array[i-1])//0~i-1位为有序,若第i位小于i-1位,继续寻位并插入,否则认为0~i位也是有序的,忽略此次循环,相当于continue { int temp=array[i];//保存第i位的值 int k = i - 1; for(int j=k;j>=0 && temp<array[j];j--)//从第i-1位向前遍历并移位,直至找到小于第i位值停止 { array[j+1]=array[j]; k--; } array[k+1]=temp;//插入第i位的值 } }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数260
191.63 KB下载数245
143.91 KB下载数1139
183.71 KB下载数640
644.84 KB下载数2752
相关文章
发现更多好内容猜你喜欢
AI推送时光机详细总结各种排序算法(Java实现)
后端开发2023-05-31
Python实现各种排序算法的代码示例总结
后端开发2022-06-04
Java中七种排序算法总结分析
后端开发2024-04-02
java实现的各种排序算法代码示例
后端开发2023-05-31
利用JavaScript实现的10种排序算法总结
后端开发2023-05-19
JavaScript实现的七种排序算法总结(推荐!)
后端开发2024-04-02
java中几种常见的排序算法总结
后端开发2024-04-02
Java超详细整理讲解各种排序
后端开发2024-04-02
十大排序算法总结(Python3实现)
后端开发2023-01-31
java 算法 6种排序小结
后端开发2024-04-02
python 排序算法总结及实例详解
后端开发2022-06-04
python常用的各种排序算法原理与实现方法小结
后端开发2023-05-17
详解Java实现拓扑排序算法
后端开发2024-04-02
Java中常见的查找算法与排序算法总结
后端开发2023-03-11
Java详细讲解分治算法如何实现归并排序
后端开发2024-04-02
Java实现几种常见排序算法代码
后端开发2022-11-15
Java 归并排序算法、堆排序算法实例详解
后端开发2023-05-31
java数据结构与算法之桶排序实现方法详解
后端开发2023-05-31
Java基础之详细总结五种常用运算符
后端开发2024-04-02
C语言完整实现12种排序算法(小结)
后端开发2024-04-02
咦!没有更多了?去看看其它编程学习网 内容吧