簡體   English   中英

在Java中找到第k個最小數字

[英]find the kth smallest number in java

以下是在數組中找到第k個最小數字的Java代碼。 此代碼適用於基本版本,不使用數據透視索引。

class Func {
    int kthSmallest(int arr[], int smallestIndex, int size){
        int smallest = arr[0];
        int removeLocation=0;
        for(int i=0; i<size; i++){
            if(arr[i] < smallest){
                smallest = arr[i];
                removeLocation = i;
            }
        }
        for(int i=removeLocation; i<size; i++){
            arr[i] = arr[i+1];
        }
        if(smallestIndex == 1) {
            return smallest;
        } else return kthSmallest(arr, smallestIndex-1, size-1);
    }
}

public class Test {
    public static void main(String[] args){
        Func test = new Func();
        int number = test.kthSmallest(new int[]{3,1,2,4,5}, 2, 5);
        System.out.println(number);
    }
}

結果是

線程“主”中的異常java.lang.ArrayIndexOutOfBoundsException:5

我找不到該錯誤的出處。

在第二個for循環中,您可以按以下方式通過i + 1修改來訪問更多范圍

for(int i=removeLocation; i<size-1; i++){
            arr[i] = arr[i+1];
        }

OUT

2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM