#include<bits/stdc++.h>
using namespace std;
int main(){
vector<int> nums{1,5,6,9,7,2,3};
int n = nums.size();
vector<int> indices(n);
// 为indices赋值,从0开始,每个元素增加1
iota(indices.begin(), indices.end(), 0);
// 在不修改nums数组的情况下,使用下标数组对nums进行排序
sort(indices.begin(), indices.end(), [&](int x, int y){
return nums[x] < nums[y];
});
for(int i : indices) cout<<i<<" ";
cout<<endl;
for(int i : indices) cout<<nums[i]<<" ";
cout<<endl;
return 0;
}
Python实现
nums = [1,5,6,9,7,2,3]
indices = list(range(0, len(nums)))
indices.sort(key=lambda x : nums[x], reverse=False)
res = [nums[i] for i in indices]
print("排序后的下标数组:", indices)
print("排序后的数组:", res)