题目:编写插入排序程序。以任意次序读入20个数据。将第一个数放入数组a的第一个元素中,以后读入的数应与已存入数组a中的数进行比较,确定它在从小到大的排列中的位置。将该位置及其后面的元素向后推移一个位置,将新读入的数据填入空出的位置中。这样在数组a中的数总是从小到大的排列的。20个数据处理完后输出数组a。
#include"stdio.h"
# include <string.h> //预编译命令
int main(){
int a[20],i=1,j,x,f;
scanf("%d",&a[0]);
while(i<20){
f=1;
scanf("%d",&x);
for(j=i-1;j>=-1;j--){
if(f==1){
f=0;
if(x<a[j]){
a[j+1]=a[j];
f=1;
}else{ //若插入数据为最大值
a[j+1]=x;
i++;
break;
}
}else{ //排序时,用来判断最终插入位置
a[j+1]=x;
i++;
break;
}
}
for(j=0;j<i;j++){ //打印数组
printf("%d",a[j]);
}
printf("\n");
}
return 1;
}