您的位置:首页 > 其它

直接插入排序

2017-02-07 14:35 375 查看
#include<stdio.h>
//直接插入排序
//插入排序是把一个记录插入到已排序的有序序列中,使整个序列在插入该记录之后仍然有序
//插入排序中较简单的一种方法就是直接插入排序,其插入位置的确定方法是将待插入的记录
//与有序区的各记录自右向左依次比较其关键字的值的大小,本实例要求使用直接插入排序法将数字
//由小到大进行排序
void insort(int s[],int n)    //自定义函数insort
{
int i,j,k,count=1;//count计算交换的次数
for(i=2;i<=n;i++)//数组下标从2开始,s[0]做监视哨,s[1]一个数据无可比性
{
s[0]=s[i];   //给监视哨赋值
j=i-1;       //确定要比较元素的最右边的位置
while(s[0]<s[j])
{
s[j+1]=s[j];  //数据右移
j--;          //移向左边的一个未比较的数
/*        //测试结果
printf("第%d次中间结果:\n",count);
for(k=0;k<=10;k++)
printf("%5d",s[k]);
printf("\n");
count++;
*/
}
s[j+1]=s[0];     //在确定的位置插入s[i]
printf("第%d次遍历:\n",i-1);
for(k=1;k<=10;k++)
printf("%5d",s[k]);
printf("\n");
}
}
void main()
{
int a[11],i;      //定义数组及变量为基本类型
printf("请输入10个数据:\n");
for(i=1;i<=10;i++)

4000
scanf("%d",&a[i]);
printf("原始顺序:\n");
for(i=1;i<11;i++)
printf("%5d",a[i]);
printf("\n");
insort(a,10);
printf("\n插入数据后排序:\n");
for(i=1;i<11;i++)
printf("%5d",a[i]);
printf("\n");
}


end

MrBread 2017-02-07
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  插入排序