gpt4 book ai didi

java - 对数组进行排序并保留原始索引

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

我正在尝试制作一个程序,对数组进行排序,但跟踪它们的原始索引。我不想更改原始数组,因此将其复制到 list[][] 中。

   public static void main(String[] args) {

int array[] = {17, 10, 8, 13, 5, 7, 8, 30};
int list[][] = new int[8][2];
int temp1, temp2, index, max;

for(int i=0;i<array.length; i++){
list[i][0]=array[i];
list[i][1]=i;
}

for(int i=0; i <array.length-1; i++){
max = list[i][0];
index = i;

for(int j = i+1; j<array.length;j++){
if(max<list[j][0]){
max = list[j][0];
index = j;

}
}
temp1 = list[i][0];
temp2 = list[i][1];

list[i][0]=max;
list[i][1] = index;

list[index][0]=temp1;
list[index][1]=temp2;




}
for(int n=0; n<list.length;n++){
System.out.println(list[n][0] + " " + list[n][1]);

}



}

所以它应该打印:

30 7

17 0

13 3

10 1

8 2

8 6

7 5

5 4

但是当我运行它时,它会打印:

30 7

17 7

13 3

10 7

8 6

8 7

7 7

5 4

有什么建议吗?

最佳答案

为什么不使用一些漂亮且干净的 OOP 呢?

class Element implements Comparable<Element> {

int index, value;

Element(int index, int value){
this.index = index;
this.value = value;
}

public int compareTo(Element e) {
return this.value - e.value;
}
}

用法:

int array[] = {17, 10, 8, 13, 5, 7, 8, 30};

// Init the element list
List<Element> elements = new ArrayList<Element>();
for (int i = 0; i < array.length; i++) {
elements.add(new Element(i, array[i]));
}

// Sort and print
Collections.sort(elements);
Collections.reverse(elements); // If you want reverse order
for (Element element : elements) {
System.out.println(element.value + " " + element.index);
}

关于java - 对数组进行排序并保留原始索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42399853/

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