#include"iostream"
#include"cstdio"
int a[]={0,31,41,59,26,41,58};
int num=6;
int main()
{
{
a[0]=a[i];
k=i-1;
while(k>0&&a[k]<a[0]) //控制增长顺序
{
a[k+1]=a[k];
k--;
}
a[k+1]=a[0];
{
printf("%d ",a[i]);
}
printf("%d\n",a[num]);
return 0;
#include"cstdio"
//本算法加入了a[0]作为监视哨,存储了下一个带排序插入的数据
//并且本算法在下一个数据插入之前的前面序列始终是有序的
int a[]={0,31,41,59,26,41,58};
int num=6;
int main()
{
int k;
//核心代码段(每次比较之后都后移一格,要么就不后移,当让这种方式比找到插入点数组整体后移要好一些)
for(int i=2;i<=num;i++){
a[0]=a[i];
k=i-1;
while(k>0&&a[k]<a[0]) //控制增长顺序
{
a[k+1]=a[k];
k--;
}
a[k+1]=a[0];
}
//以下为输出部分
for(int i=1;i<num;i++){
printf("%d ",a[i]);
}
printf("%d\n",a[num]);
return 0;
}
算法优劣分析:
最好情况:T=an+b;
最差情况:T=an^2+bn+c;