直接插入排序及其源代码
作法
直接插入排序(straight in sertio n sort) 的作法是
每次从无序表中取出第一个元素把它插入到有序表的合适位置使有序表仍然有序。
第一趟比较前两个数 然后把第二个数按大小插入到有序表中 第二趟把第三个数据与前两个数从后向前扫描把第三个数按大小插入到有序表中依次进行下去 进行了(n-1)趟扫描以后就完成了整个排序过程。
直接插入排序属于稳定的排序时间复杂性为 o(nA2)空间复杂度为 0(1)。
直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。 内
层循环为待比较数值确定其最终位置。 直接插入排序是将待比较的数值与它的前一个数值进行比较所以外层循环是从第二个数值开始的。当前一数值比待比较数值大的情况下继续循环比较直到找到比待比较数值小的并将待比较数值置入其后一位置 结束该次循环。
值得注意的是我们必需用一个存储空间来保存当前待比较的数值 因为当一趟
比较完成时我们要将待比较数值置入比它小的数值的后一位 插入排序类似玩牌时整理手中纸牌的过程。插入排序的基本方法是每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置直到全部记录插入完毕为止。
源代码
#in clude<iostream>using n amespace std;
#defi ne MAXSIZE 20typedef int keyType;typedef struct {keyType key; string otherinfo;
}RedType;typedef struct{
RedType r[MAXSIZE+1]; int len gth;
}S qList;int In sertSort(SqList&L)
{for(i nt i=2;i<=L.len gth;i++)
{if(L.r[i].key<L.r[i-1].ke y)
L.r[0]=L.r[i];
L.r[i]=L.r[i-1];for(int j=i-2;L.r[0].key<L.r[j].key;j--)
{
L.r[j+1]=L.r[j];
}
L.r[j+1]=L.r[0];
}
}return 1;
}int main()
{
SqList L;c o ut<<"插入排序 "<<endl;cout<<"请输入排序元素的个数";int num;cin>>num;
L.l engt h=num;c o ut<<"请输入各个元素 以空格隔开 "<<end l;for(int i=1;i<=L.length;i++)
{c in>>L.r[i].key;
}cout<<"您输入的元素为 ";fo r(i=1;i<=L.len gth;i++)c o ut<<L.r[i].ke y<<"";int test=InsertSort(L);if(tes t==1)
{c o ut<<end l;c o ut<<"插入排序的结果为 "<<end l;fo r(int j=1;j<=L.le ngth;j++)
{c o ut<<L.r[j].ke y<<"";
}
}els e
{cout<<"排序失败 ";
}return 0;
老薛主机怎么样?老薛主机这个商家有存在有一些年头。如果没有记错的话,早年老薛主机是做虚拟主机业务的,还算不错在异常激烈的市场中生存到现在,应该算是在众多商家中早期积累到一定的用户群的,主打小众个人网站业务所以能持续到现在。这不,站长看到商家有在进行夏季促销,比如我们很多网友可能有需要的香港vps主机季度及以上可以半价优惠,如果有在选择不同主机商的香港机房的可以看看老薛主机商家的香港vps。点击进入...
金山云618年中促销活动正在进行中!金山云针对企业级新用户优惠力度比普通个人用户优惠力度要大,所以我们也是推荐企业新用户身份购买金山云企业级云服务器,尽量购买3年配置的,而不是限时秒杀活动中1年的机型。企业级用户购买金山云服务器推荐企业专区:云服务器N3 2核4G云服务器,1-5M带宽,827.64元/3年,性价比高,性能稳定!点击进入:金山云618年中促销活动目前,金山云基础型E1云服务器2核4...
我们对于BlueHost主机商还是比较熟悉的,早年我们还是全民使用虚拟主机的时候,大部分的外贸主机都会用到BlueHost无限虚拟主机方案,那时候他们商家只有一款虚拟主机方案。目前,商家国际款和国内款是有差异营销的,BlueHost国内有提供香港、美国、印度和欧洲机房。包括有提供虚拟主机、VPS和独立服务器。现在,BlueHost 商家周年活动,全场五折优惠。我们看看这次的活动有哪些值得选择的。 ...