有一個已經排好序的陣列,要求輸入一個數後,按原來順序的規律將它插入陣列中
阿新 • • 發佈:2020-07-09
有一個已經排好序的陣列,要求輸入一個數後,按原來順序的規律將它插入陣列中
【答案解析】
將資料插入到已排序的序列中,只需兩步即可:
- 找待插入元素在陣列中的插入位置
- 插入元素
具體如下:
注意:極端情況下,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; }
【結果截圖】