有一个有序数组,要求将一个新输入的数插入到数组中并保证插入新数后,数组仍有序。


因为数组在初始条件下是有序的,而题目要求插入新数后数组仍有序。因此,首先应该在数组中找到插入位置,然后将该位置原有的数以及该位置后面的数都依次后移一个位置,为新插入的数值空出一个位置。

#include<stdio.h>

int main()

{

int a[11] = {2, 4, 8, 15, 20, 36, 49, 51, 78, 96};

int temp1, temp2, number, end, i, j;

printf("The original arry is:\n");

for(i = 0; i < 10; i++)

printf("%5d", a[i]);

printf("\n");

printf("Please insert a new number:");

scanf("%d", number);

end = a[9];

 if(number > end)

 a[10] = number;

 else

 {

 for(i = 0; i < 10; i++)

 {

 if(a[i] > number)

 {

 temp1 = a[i];

 a[i] = number;

 for(j=i+1; j<11; j++)

 {

 temp2 = a[j];

 a[j] = temp1;

 temp1 = temp2;

 }

 break;

 }

 }

 }

 for(i=0; i<11; i++)

 printf("%6d", a[i]);

 printf("\n");

}