直接插入排序:
代码:
#include<stdio.h>
int insert(int a[],int num) {
intj;
for(inti=2; i<=10; i++) {
a[0]=a[i];
j=i-1;
while(a[0]<a[j]){
a[j+1]=a[j];
j--;
}
a[j+1]=a[0];
}
}
int main() {
inta[11];
for(inti=1; i<=10; i++)
scanf("%d",&a[i]);
insert(a,10);
for(inti=1; i<=10; i++)
printf("%d",a[i]);
return0;
}
注释:
#include <stdio.h>
void insort(int s[], int n) { /*自定义函数isort*/
inti, j;
for(i = 2; i <= n; i++) { /*数组下标从2开始,0做监视哨,1一个数据无可比性*/
s[0]= s[i]; /*给监视哨赋值*/
j= i - 1; /*确定要进行比较的元素的最右边位置*/
while(s[0] < s[j]) {
s[j+ 1] = s[j]; /*数据右移*/
j--; /*移向左边一个未比较的数*/
}
s[j+ 1] = s[0]; /*在确定的位置插入s[i]*/
}
}
void main() {
inta[11], i; /*定义数组及变量为基本整型*/
printf("请输入10个数据:\n");
for(i = 1; i <= 10; i++)
scanf("%d",&a[i]); /*接收从键盘中输入的10个数据到数组a中*/
printf("原始顺序:\n");
for(i = 1; i < 11; i++)
printf("%5d",a[i]); /*将未排序前的顺序输出*/
insort(a,10); /*调用自定义函数isort()*/
printf("\n插入数据排序后顺序:\n");
for(i = 1; i < 11; i++)
printf("%5d",a[i]); /*将排序后的数组输出*/
printf("\n");
}
版权说明
著作权归作者所有©。 商业转载请联系作者获得授权,非商业转载请注明出处。 本文作者:Joe.Smith 发表日期:2016年10月7日 本文链接:http://blog.csdn.net/qq_26816591/article/details/52782255 来源:CSDN 更多内容:关于visual studio 2010 直接复制粘贴会出现乱码的解决方法