首页 > 学院 > 开发设计 > 正文

直接插入排序

2019-11-11 03:40:59
字体:
来源:转载
供稿:网友
#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++) 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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表