题解 | #寻找第K大#
寻找第K大
https://www.nowcoder.com/practice/e016ad9b7f0b45048c58a9f27ba618bf
//快排思想
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param a int整型一维数组
* @param n int整型
* @param K int整型
* @return int整型
*/
public int findKth (int[] a, int n, int K) {
// write code here
ArrayList<Integer> al = new ArrayList<>();
for(int num : a){
al.add(num);
}
quicksort(al, 0, al.size() - 1);
int result = al.get(a.length - K);
return result;
}
public void quicksort(ArrayList<Integer> al, int start, int end) {
if (start < end) {
int index = qsort(al, start, end);
quicksort(al, start, index - 1);
quicksort(al, index + 1, end);
}
}
public int qsort(ArrayList<Integer> al, int start, int end) {
int point = al.get(end);
int i = start;
for (int j = start; j < end; j++) {
if (al.get(j) <= point) {
Collections.swap(al, j, i);
i++;
}
}
Collections.swap(al, end, i);
return i;
}
}
