【发布时间】:2014-06-28 12:48:29
【问题描述】:
我正在尝试对整数数组进行排序(递减),但要跟踪原始索引。
我的意思是,例如,如果我有这个数组:
b[] = { 4, 5, 3, 5, 2 }
使用 Arrays.sort(b, Collections.reverseOrder()) 后它变成 (我正在使用 Arrays.sort,因为在此示例中 b 的长度仅为 5,但在我的问题中,b 的长度可能是 1
b[] = { 5, 5, 4, 3, 2 }
但我想以某种方式获得原始索引,我的意思是知道
bOrignalIndex[] = { 1, 3, 0, 2, 4 }
我不知道我的问题是否清楚,请问一切。 我有这段 C++ 代码,它很有帮助,因为它可以满足我的需求
n=4
m=5
tord[] =
[0] 0
[1] 1
[2] 2
[3] 3
ts[] =
[0] 4
[1] 5
[2] 3
[3] 5
tord[MAXT], ts[MAXT];
bool ord(int a, int b){
return ts[a] > ts[b]; }
int main(void){
for(int m, n; scanf("%d %d", &m, &n)){
bool possible = true;
FOR(i=0;i<m, i++){ // for each team
scanf("%d", ts + i); // read team size
tord[i] = i;
}
sort(tord, tord + m, ord)
事情是在这样做之后,tord有一个按索引排序的数组,即:
tord[] =
[0] 1
[1] 3
[2] 0
[3] 2
【问题讨论】:
-
Duplicate? 还有很多类似的