首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C語言經典演算法實作:有序數組插入元素(從大到小排序後插入)

     編輯:C 語言基礎

問題描述

將一個整數按大小順序插入已排序(由大到小)的數組中。步驟:
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。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved