有一個已經排好序的數組,要求輸入一個數后,按原來順序的規律將它插入數組中
【答案解析】
將數據插入到已排序的序列中,只需兩步即可:
- 找待插入元素在數組中的插入位置
- 插入元素
具體如下:

注意:極端情況下,end可能會被減為-1,比如在上述序列中插入0
【代碼實現】
#include<stdio.h>
int main()
{
int num = 0;
int array[10] = {1,2,3,4,5,6,7,8,9};
printf("請輸入一個整數:");
scanf("%d", &num);
printf("原數組序列為:\n");
for (int i = 0; i < 9; ++i)
printf("%d ", array[i]);
printf("\n");
// 數組為升序
// 在數組中找待插入元素的位置,具體找的方式為:
// 從后往前依次與數組中元素進行比較,如果要插入元素num比end位置數據小,則num一定插在end位置之前
// 因此將end位置數據往后搬移一個位置
// 如果num大於end位置元素或者end已經在區間最左側,則位置找到
// 最后將新元素插入到end+1的位置
int end = 8;
while (end >= 0 && num < array[end])
{
array[end+1] = array[end];
end--;
}
array[end + 1] = num;
printf("插入元素%d之后的結果為:\n", num);
for (int i = 0; i < 10; ++i)
printf("%d ", array[i]);
printf("\n");
return 0;
}
【結果截圖】