学习交流关注微信公众号:钟渊博客
代码实现如下:
public static void main(String[] args) {
int [] arr = {2, 6, 3, 8, 9, 1, 16, 18, 0, 4};
int N = 3;
getTopNMinBySort(arr, 0, arr.length - 1, N);
for (int i = 0; i < N; i++) {
System.out.print(arr[i] + " ");
}
}
private static int partion(int [] arr, int first, int end) {
int i = first;
int main = arr[end];
for (int j = first; j < end; j++) {
if (arr[j] < main) {
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
i++;
}
}
arr[end] = arr[i];
arr[i] = main;
return i;
}
private static void getTopNMinBySort(int [] arr, int first, int end, int n) {
if (first < end) {
int partionIndex = partion(arr, first, end);
if (partionIndex == n - 1) {
return;
} else if (partionIndex > n - 1) {
getTopNMinBySort(arr, first, partionIndex - 1, n);
} else {
getTopNMinBySort(arr, partionIndex + 1, end, n);
}
}
}