#include<stdio.h>
#define N 10
main(){
int i,j,a[N]={0};
for(i=1;i<=N-1;i++){
scanf("%d",a+i);
}
a[0]=100;
for(i=2;i<=N-1;++i){
if(a[i]<a[i-1]){ //与要插的前一个数比较,若小于前一位,执行插入。
a[0]=a[i]; //a[0]为哨兵-防止溢出,要插入的数暂存至放置a[0]
a[i]=a[i-1]; //要插的前一个数后移一位
for( j=i-2;a[0]<a[j];--j)//要插的数值a[0]与要插的前第二位及之前的数进行比较
a[j+1]=a[j]; //若比a[0]大,向后移一位(腾位)
a[j+1]=a[0]; //执行插入至空位
}
}
for(i=1;i<=N-1;i++){
printf("%3d",a[i]);
}
}
要插的数:4 2 3 0
位置:0 1 2 3 4
**********4 2
*********2 2 4
*********3 2 3 4
#define N 10
main(){
int i,j,a[N]={0};
for(i=1;i<=N-1;i++){
scanf("%d",a+i);
}
a[0]=100;
for(i=2;i<=N-1;++i){
if(a[i]<a[i-1]){ //与要插的前一个数比较,若小于前一位,执行插入。
a[0]=a[i]; //a[0]为哨兵-防止溢出,要插入的数暂存至放置a[0]
a[i]=a[i-1]; //要插的前一个数后移一位
for( j=i-2;a[0]<a[j];--j)//要插的数值a[0]与要插的前第二位及之前的数进行比较
a[j+1]=a[j]; //若比a[0]大,向后移一位(腾位)
a[j+1]=a[0]; //执行插入至空位
}
}
for(i=1;i<=N-1;i++){
printf("%3d",a[i]);
}
}
要插的数:4 2 3 0
位置:0 1 2 3 4
**********4 2
*********2 2 4
*********3 2 3 4
*********0 0 2 3 4