直接插入排序
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
相关文章推荐
- C++代码,数据结构-内部排序-插入排序-直接插入排序
- 白话经典算法系列之二 直接插入排序的三种实现(转)
- 2希尔排序-直接插入排序改进版
- 利用数组实现直接插入排序
- 直接插入排序和希尔排序的总结
- 直接插入排序-->希尔排序
- JAVA排序算法---直接插入排序
- 排序算法之直接插入排序
- 经典算法系列之二 直接插入排序的三种实现
- 插入排序--直接插入排序和希尔排序
- 直接插入排序
- 直接插入排序
- 直接插入排序、二分插入排序、希尔排序、冒泡排序与简单选择排序
- 2008秋-计算机软件基础-直接插入排序
- 直接插入排序
- 排序算法大集锦_插入类——直接插入排序
- 【算法拾遗(java描写叙述)】--- 插入排序(直接插入排序、希尔排序)
- 冒泡排序、直接插入排序、选择插入排序
- 直接插入排序 .