开发者社区> 问答> 正文

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

代码:

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]);
}
}

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

展开
收起
蛮大人123 2016-05-31 14:10:43 3711 0
3 条回答
写回答
取消 提交回答
  • 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); } }
    2019-07-17 19:21:52
    赞同 展开评论 打赏
  • Collections.sort(list);
    list.get(k-1);

    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]

    2019-07-17 19:21:52
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载