輸入 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,以此類推。