在java中找到第k个最小的数字

时间:2018-04-20 07:48:54

标签: java data-structures

下面是在数组中找到第k个最小数字的java代码。 此代码适用于基本版本,不使用pivot-index。

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

结果是

  

线程中的异常&#34; main&#34; java.lang.ArrayIndexOutOfBoundsException:5

我无法找到错误发生的地方。

1 个答案:

答案 0 :(得分:1)

在第二个for循环中,您通过i + 1修改超出范围,如下所示

WebElement radioMonthly = driver.findElement(By.xpath("//* 
[@id=\"dateFromTo_date_format_2\"]"));

Actions actions = new Actions(driver);
actions.moveToElement(radioMonthly).click().perform();

OUT

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