gpt4 book ai didi

java - 将数组从高到低排序

转载 作者:行者123 更新时间:2023-12-04 08:57:05 25 4
gpt4 key购买 nike

我正在尝试用 Java 对数组进行排序,我只想要前 3 个值。
//A:55,B:45,C:5,D:35,E:35,F:1

       int a[] = {A,B,C,D,E,F};

float first =0;
float second=0;
float third =0;

for (int i=0; i<a.length; i++){
if(first <= a[i]){
first=a[i];
}
}System.out.println("first largest is "+first);

for (int j=0; j<a.length; j++){
if(a[j] <=first && a[j] > second){
second = a[j];
}
}System.out.println("second largest is "+second);

for (int k=0;k<a.length; k++){
if(a[k]<=second && a[k]>third){

third =a[k];
}
}System.out.println("third largest is "+third);
这里的另一件事是,如果 A 和 B 相等,它应该给我 A,如果 D 和 E 相等,它应该提供 D 作为答案。所以最终答案应该是ABD。

最佳答案

Max Heap数据结构是你的 friend :

public static void main(String[] args) {
char[] arr = { 'A', 'B', 'C', 'D', 'E', 'F' };

List<Character> sorted = sortAngGetTopThree(arr);

System.out.println("first largest is " + sorted.get(0));
System.out.println("second largest is " + sorted.get(1));
System.out.println("third largest is " + sorted.get(2));
}

public static List<Character> sortAngGetTopThree(char... arr) {
Map<Character, Integer> map = Map.of('A', 55, 'B', 45, 'C', 5, 'D', 35, 'E', 35, 'F', 1);

Comparator<Character> sortByValueAndLetterDesc = (one, two) -> {
int res = Integer.compare(map.get(two), map.get(one)); // sort by number desc first
return res == 0 ? Character.compare(one, two) : res; // sort by letter asc second
};

Queue<Character> maxHeap = new PriorityQueue<>(sortByValueAndLetterDesc);

for (char ch : arr)
maxHeap.add(ch);

List<Character> res = new ArrayList<>(3);

for (int i = 0; i < 3 && !maxHeap.isEmpty(); i++)
res.add(maxHeap.remove());

return res;
}

关于java - 将数组从高到低排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63767514/

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