gpt4 book ai didi

java - 如何构建一个索引数组来表示不同数组从最高到最低的值?

转载 作者:行者123 更新时间:2023-12-01 19:34:43 25 4
gpt4 key购买 nike

标题可能有点令人困惑,所以这里有一个例子。我有两个数组:

int [] scores;
scores = new int[5]; //(5,7,10,3,6)
int [] places;
places = new int[5]; //(1,2,3,4,5)

我需要以某种方式对第二个数组进行排序(我无法更改第一个数组),因此它代表第一个数组中元素的高度。 10 是最高的,所以它的位置必须是第 1,3 是最低的,所以它的位置必须是第 5。

排序后第二个数组应如下所示:

places = {4,2,1,5,3};

这是我的代码,我需要一些帮助才能使其按应有的方式工作。

do {
for (int i = 0; i < 5; i++) {
for (int j = 1; j < 5; j++) {
if (scores[i] < scores[j]) {
temp = places[i];
places[i] = places[j];
places[j] = temp;
flag = true;
} else {
flag = false;
}
}
}
} while (flag);

提前致谢

最佳答案

@Korashen 建议了一个非常好的解决方案,

另一种方式:假设所有分数的值都不同且为正数,您可以复制该数组,对其进行排序,并通过减法得知索引,

在您的示例中:

排序前:分数 = (5,7,10,3,6)

排序后:scores_sorted = (3,5,6,7,10)

地点的值(value)将遵循以下规则:

if(scores_sorted[i]-scores[j] == 0)
地点[i] = j

完整示例:

int[] scores = new int[]{5, 7, 10, 3, 6};
int[] scores_sorted = scores.clone();
int[] places = new int[]{0,1,2,3,4};
sort(scores_sorted);
for(int i=0;i<5;++i){
for(int j=0;j<5;++j){
if(scores_sorted[i]-scores[j] == 0){
places[i] = j;
}
}
}

关于java - 如何构建一个索引数组来表示不同数组从最高到最低的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58259739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com