插入排序

插入排序

实现原理:

插入排序是在插入的过程中,逐渐将范围不断扩大的排序方法,例如先从数组下标为1的元素开始,比较1所在的元素和0所在元素的大小。如果满足条件(按升序排列)就把1和0位置所在的元素元素进行交换,第一次比较结束。然后从2开始,先是2和1比较,满足就交换,不满足就不变,再是1和0比较,再重复之前的过程,第二次比较结束。然后从3一直到N-1。从这块我们可以看到,插入排序是将有序的范围逐渐扩大,也就是说当每一次比较结束时,前面的已经排好序了。

主要代码如下:

 

复制代码
 1 /*bool sort(int n) {//插入排序
 2   for (int i = 1;i < n;i++) 
 3    for (int j = i;j > 0 && compare(j, j - 1);j--) 
 4     exchange(j, j - 1);
 5   return true;
 6  }*/
 7 //---------------------------------------------
 8 /*bool Sort::compare(int i, int j) {//比较两个数组元素大小
 9  return a[i] < a[j] ? true : false;
10 }*/
11 //----------------------------------------------
12 /*bool Sort::exchange(int i,int j) {//交换两个数组元素的位置
13  int tmp = 0;
14  tmp = a[i];
15  a[i] = a[j];
16  a[j] = tmp;
17  return true;
18 }*/
复制代码

 

插入排序代分析:

对于大部分有序的数组而言,使用插入排序是比较好的选择。因为如果大部分有序的话,交换的次数就会非常少,最好情况(数组已有序)比较次数为N-1交换次数为0。所以就会非常节省运行时间。最坏情况就是数组是逆序的,比较次数为N*N-1,交换次数为N*N-1。

 

posted @   叶落了无痕  阅读(182)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示