將一個整數按大小順序插入已排序(由大到小)的數組中。步驟:
1. 先對原數組排序(選擇排序,由大到小)。
2. 輸入待插入數 n。
3. 從頭掃描,找到第一個 a[i] < n 的位置 i。
4. 從陣列尾端向前將 i 之後的元素整體後移一格。
5. 將 n 放入 a[i]。若全部元素均大於 n,則插入末尾。
main() {
int i, j, p, q, s, n, a[11] = {127,3,6,28,54,68,87,105,162,18};
/* 選擇排序:由大到小 */
for (i = 0; i < 10; i++) {
p = i; q = a[i];
for (j = i + 1; j < 10; j++)
if (q < a[j]) { p = j; q = a[j]; }
if (p != i) { s = a[i]; a[i] = a[p]; a[p] = s; }
printf("%d ", a[i]);
}
printf("\ninput number:\n");
scanf("%d", &n);
/* 尋找插入點並後移 */
for (i = 0; i < 10; i++)
if (n > a[i]) {
for (s = 9; s >= i; s--) a[s + 1] = a[s];
break;
}
a[i] = n;
for (i = 0; i <= 10; i++) printf("%d ", a[i]);
printf("\n");
}
輸入 47,輸出顯示 47 成功插入在 54 與 28 之間,數組長度變為 11。