之前发过一个版本,再次写这个代码,感觉这个版本更简单,更容易理解
#include<stdio.h>
main(){
int N=10,b=1,a[N],i,j,temp,insert;
printf("请输入%d个数为数组赋初值:",N);
for(i=0;i<10;i++){//为数组赋初值
scanf("%d",&a[i]);
}
for(i=0;i<N-1;i++){//利用冒泡,将数组从小到大排序
for(j=0;j<N-1-i;j++){
if(a[j]>=a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("%d个数从小到大排序之后的顺序:",N);
for(i=0;i<N;i++){//输出数组排序结果
printf("%d ",a[i]);
}
printf("\n");
while(b){//用while循环控制是否想再次插入数字,最少是插入一次,并且满足条件的话可以一直往数组中插入数字
printf("\n请再次输入一个数:");
scanf("%d",&insert);//输入插入的数字
printf("按原来排序的规律,将%d插入数组中,排序后的顺序为:",insert);
N=N+1;//将数组扩大一个空间,并且是每while一次就扩大一个空间
for(i=0;i<N-1;i++){//循环跟需要插入的数比较
if(a[i]>=insert){
temp=a[i];
a[i]=insert;
insert=temp;
}
}
a[N-1]=insert;//比较完之后,insert是最大的数,直接放到数组新增加的那个空间
for(i=0;i<N;i++){//输出最后排序之后的数组
printf("%d ",a[i]);
}
printf("\n是否继续插入,按1继续,0结束:");
scanf("%d",&b);//对应while循环,如果不想再插入,就输入0结束循环,反之也是一样的道理。
}
return 0;
}