gpt4 book ai didi

java - 对数组进行降序排序,并将主数组的变化收集到新数组中

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

public static int[] sortByScores(double[] scores){

double temp;
int i,j;
int[] scoreIndex = new int[3];

for (i = 0; i <= scores.length; i++)
for (j = i+1; j < scores.length; j++) {
if (scores[i] < scores[j]) {
temp = scores[i];
scores[i] = scores[j];
scores[j] = temp;
scoreIndex[i] = j;
scoreIndex[j] = i;
}
}

return scoreIndex;
}

此方法按降序对“scores”数组进行排序,并将数组中更改的索引键存储在“scoreIndex”数组中。

如果我输入1,3,2,4,此方法不起作用

他们有更好的方法来存储索引键更改日志吗?

示例,如果 1 输入:

1
2
4
3

排序后将是:

4
3
2
1

排序索引应该是:

Key   Value 
0 3
1 2
2 0
3 1

最佳答案

实际上,您可以获取包含某些索引处元素的正确顺序的数组,而无需对此数组进行排序,例如,通过执行以下操作:

   for(int i = 0; i < scores.length; i++) {
for(int j = i; j < scores.length; j++) {
if(scores[scoreIndex[j]] > scores[scoreIndex[i]]) {
int temp = scoreIndex[j];
scoreIndex[j] = scoreIndex[i];
scoreIndex[i] = temp;
}

}
}

简而言之,在此方法的开头,我们创建一个数组,其中包含您的 Scores[] 数组中索引的当前顺序,即 0, 1, ..., Scores.length-1。然后,我们执行类似于标准排序的操作,但不是按照 Scores[] 数组,而是按照 ScoreIndex[] 数组。

一旦我们对这个数组进行排序,我们就可以创建另一个数组并将其元素放置在适当的位置:

        double[] copy = new double[scores.length];
for(int k = 0; k < scores.length; k++) {
copy[k] = scores[k];
}
for(int n = 0; n < scores.length; n++) {
scores[n] = copy[scoreIndex[n]];
System.out.println(scores[n]);
}

所以,把它们放在一起:

public static int[] sort(double[] scores) {
int[] scoreIndex = new int[scores.length];
for(int i = 0; i < scores.length; i++) {
scoreIndex[i] = i;
}
for(int i = 0; i < scores.length; i++) {
for(int j = i; j < scores.length; j++) {
if(scores[scoreIndex[j]] > scores[scoreIndex[i]]) {
int temp = scoreIndex[j];
scoreIndex[j] = scoreIndex[i];
scoreIndex[i] = temp;
}

}
}
double[] copy = new double[scores.length];
for(int k = 0; k < scores.length; k++) {
copy[k] = scores[k];
}
for(int n = 0; n < scores.length; n++) {
scores[n] = copy[scoreIndex[n]];
System.out.println(scores[n]);
}


return scoreIndex;
}

关于java - 对数组进行降序排序,并将主数组的变化收集到新数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48988558/

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