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

排序與原位置追蹤:10個不同整數排序後輸出原始索引位置

     編輯:關於C語言

問題描述

輸入 10 個互不相同的整數,升序排序後輸出排序結果,第二行輸出每個排序後元素在原數組中的 1-based 位置。

解題關鍵

需保留原始數組副本。排序後,對每個元素在原數組中查找位置。因元素唯一,找到即可停止。

代碼實現

#include <stdio.h>

int main() {
    int i, j, t, a[10], b[10];

    for (i = 0; i < 10; i++) scanf("%d", &a[i]);
    for (i = 0; i < 10; i++) b[i] = a[i];  // 備份原數組

    // 簡單選擇排序
    for (i = 0; i < 9; i++)
        for (j = i+1; j < 10; j++)
            if (a[i] > a[j]) {
                t = a[i]; a[i] = a[j]; a[j] = t;
            }

    // 輸出排序後數組
    for (i = 0; i < 10; i++) {
        printf("%d", a[i]);
        if (i < 9) printf(" ");
    }
    printf("\n");

    // 輸出原始位置(1-based)
    for (i = 0; i < 10; i++) {
        for (j = 0; j < 10; j++)
            if (a[i] == b[j]) {
                printf("%d", j+1);
                if (i < 9) printf(" ");
                break;
            }
    }
    return 0;
}

測試樣例

輸入: 1 2 3 5 4 6 8 9 10 7
輸出:

1 2 3 4 5 6 7 8 9 10
1 2 3 5 4 6 10 7 8 9

驗證:排序後第 7 個元素 7 原在位置 10,第 8 個元素 8 原在位置 7,以此類推。

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