加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在数组中找到k个最小整数

发布时间:2020-12-15 04:23:35 所属栏目:Java 来源:网络整理
导读:这是我的代码,它适用于查找1-7个最小整数,但是8和9.当我在数组中找到8个最小整数时,它返回null.任何人都可以帮我解决问题吗?我在这里使用quicksort. 非常感谢! 更新:我已经找到问题,这是主函数中的数组.在我改为下面的样子后, int[] arr = {2,3,1,7,5,6,2
这是我的代码,它适用于查找1-7个最小整数,但是8和9.当我在数组中找到8个最小整数时,它返回null.任何人都可以帮我解决问题吗?我在这里使用quicksort.
非常感谢!

更新:我已经找到问题,这是主函数中的数组.在我改为下面的样子后,

int[] arr = {2,3,1,7,5,6,20,8,4,9};

if(front>=end) return input;

它现在有效!

import java.util.Arrays;
import java.io.*;

class quicksort{
public static void main(String[] args){
    int[] arr = new int[9];
    arr[0] = 7;
    arr[1] = 2;
    arr[2] = 4;
    arr[3] = 8;
    arr[4] = 3;
    arr[5] = 5;
    arr[6] = 1;
    arr[7] = 0;
    arr[8] = 10;

    System.out.println((Arrays.toString(findKSamllest(arr,8))));
}
public static int partition(int[] input,int front,int end){
    int pivot = input[front];
    while(front < end){
        while(input[front]<pivot)
            front++;
        while(input[end]>pivot)
            end--;
        swap(input,front,end);
    }
    return front;
}
public static void swap(int[] input,int s,int l){
    int temp = input[s];
    input[s] = input[l];
    input[l] = temp;
}

public static int[] findK(int[] input,int end,int k){
    if(front>=end) return null;
    int pivot = partition(input,end);
    //System.out.println(pivot);
    if(k==pivot){
        return Arrays.copyOfRange(input,pivot);
    }
    else {
        if(k<pivot) 
            return findK(input,pivot,k); 
        return findK(input,pivot+1,end,k);
    }
}
public static int[] findKSamllest(int[] input,int k){
    return findK(input,input.length-1,k);
}

}

解决方法

更改

if(front >= end) return null;

if(front > end) return null;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读