有一个已经排好序的数组(假设从小到大排序),现输入一个数,要求按原来的规律将他插入数组中。
法一:
int main( )
{
int arr[11]={2,4,6,8,10,12,14,16,18,20};//10个数,多一个空留给要插入的元素
int i,j,num;
printf("请输入要插入的数:\n");
scanf("%d",&num);
for(i=0;i<10;i++)
if(arr[i]>num)break;
for(j=10;j>i;j--)
arr[j]=arr[j-1];//数组元素向后移
arr[i]=num; //插入
for(i=0;i<11;i++)
printf("%d ",arr[i]);
}
法二:
int main( )
{
int arr[12]={0,2,4,6,8,10,12,14,16,18,20};//11个数
int i,j=10,num;//j是第11个数的下标
scanf("%d",&num);
arr[0]=num;
i=j;
while(arr[i]>num){
arr[i+1]=arr[i];
i--;
}
arr[++i]=num;
j++; //j=11
for(i=1;i<=j;i++)
printf("%d ",arr[i]);
}
法三:
int main( )
{
int arr[11]={2,4,6,8,10,12,14,16,18,20};
int i,j=11,num;
scanf("%d",&num);
i=j-1; //i=10
while((i>0)&&(arr[i-1]>num)){ //arr[9],10个数中的最后一个数
arr[i]=arr[i-1]; //arr[10]=arr[9],arr[9]=arr[8]
i--;
}
arr[i]=num; //插入
for(i=0;i<j;i++)
printf("%d ",arr[i]);
}