JAVA排序问题求若干个数的数组中第k个最大值-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

JAVA排序问题求若干个数的数组中第k个最大值

2016-05-31 14:10:43 3346 3

代码:

public class Sorting0{
public int[] sort(int[] num){
for(int i=0;i<num.length;i++){
        for(int j=0;j<num.length-i-1;j++){

            if(num[j]<num[j+1]){

                int n=0;
                n=num[j];
                num[j]=num[j+1];
                num[j+1]=n;
            }
        }
    }
    return num;
}
public static void main(String[] args){
    Scanner input=new Scanner(System.in);
    int k=input.nextInt();
    Sorting0 s=new Sorting0();
    int[] num=new int[100];
    for(int i=0;i<k;i++){

        num[i]=input.nextInt();
    }
    s.sort(num);
    while(input.hasNext()){
        if(input.nextInt()>num[k-1]){
            if(input.nextInt()>num[k-2]){
                num[k-1]=num[k-2];
            }
            else{
                num[k-1]=input.nextInt();
            }
        }
    }
    System.out.println(num[k-1]);
}
}

不知道为什么不对,求助.

取消 提交回答
全部回答(3)
  • 左小猫
    2019-07-17 19:21:52
    import java.util.Scanner; import java.util.Comparator; import java.util.ArrayList; public class Test implements Comparator{ public static void main(String[] args){ Scanner keyboard = new Scanner(System.in); ArrayList nums = new ArrayList<>(); System.out.print("请输入要存储的数字总个数:"); int count = keyboard.nextInt(); for(int i = 1 ; i<= count ; i ++){ System.out.print(String.format("请输入第%d个数值:",i)); nums.add(keyboard.nextInt()); } nums.sort(new Test()); System.out.print("请输入要查询的倒数第几位:"); int index_D = keyboard.nextInt(); assert index_D > 0; int index = 0; if(index_D <= nums.size()){ index = nums.size() - index_D; } System.out.println(String.format("倒数第%d位是%d.",index_D,nums.get(index))); } public int compare(Integer i1,Integer i2){ return i1.compareTo(i2); } }
    0 0
  • mrcamel
    2019-07-17 19:21:52

    Collections.sort(list);
    list.get(k-1);

    0 0
  • 蛮大人123
    2019-07-17 19:21:52

    排序没有问题(当然内侧循环没必要对已经排序的部分再遍历了)。
    int k=input.nextInt();
    这里输入的k代表的应该是数组的大小,而不是第k大的k,建议将k重命名为n
    `while(input.hasNext()){
    if(input.nextInt()>num[k-1]){
    if(input.nextInt()>num[k-2]){
    num[k-1]=num[k-2];`
    这里不对,你怎么又去读取输入呢?你这里需要输入的是你指定的k,然后直接返回或者输出num[n-k]

    0 0
添加回答
相关问答

1

回答

JAVA中什么情况下会使用数组呢?

2022-04-02 15:58:46 500浏览量 回答数 1

0

回答

请问java性能问题:如何优化向HashMap插入元素的速度?

2021-11-12 17:18:18 131浏览量 回答数 0

0

回答

请问java中使用BigDecimal计算操作性能最优的做法是什么?

2021-11-07 15:42:19 204浏览量 回答数 0

1

回答

java性能问题:有没有比较字符串是否相等的最快方法?

2021-11-06 16:21:40 161浏览量 回答数 1

0

回答

您好java性能问题:有没有比较字符串是否相等的最快方法?

2021-11-07 00:39:14 137浏览量 回答数 0

1

回答

java性能问题:如何优化向HashMap插入元素的速度?

2021-11-06 15:41:34 205浏览量 回答数 1

1

回答

java中常用的性能调优诊断工具都有哪些,请帮忙提供一下?

2021-11-06 10:24:39 150浏览量 回答数 1

0

回答

请问java中常用的性能调优诊断工具都有哪些,请帮忙提供一下?

2021-11-06 22:35:44 83浏览量 回答数 0

1

回答

java中使用BigDecimal计算操作性能最优的做法是什么?

2021-11-06 16:35:15 222浏览量 回答数 1

1

回答

java中ArrayBlockingQueue与DoubleBufferedQueue哪个性能更高?

2021-11-06 21:47:49 201浏览量 回答数 1
+关注
蛮大人123
我说我不帅他们就打我,还说我虚伪
0
文章
7733
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载