读书人

找到数组中第k小的元素

发布时间: 2013-02-19 11:11:40 作者: rapoo

找出数组中第k小的元素
public class MinKth { public static int calculate(int[] array, int k) { return calculate(array, k, 0, array.length - 1); } public static int calculate(int[] array, int k, int low, int high) { int target = array[low]; int i = low; int j = high; while (i < j) { while (i <= high && array[i] <= target) { i++; } while (j >= low && array[j] > target) { j--; } if (i < j) { int tmp = array[i]; array[i] = array[j]; array[j] = tmp; } } int tmp = array[j]; array[j] = array[low]; array[low] = tmp; int gap = i - low + 1; if (gap > k) return calculate(array, k, low, i - 1); if (gap < k) return calculate(array, k - gap, i + 1, high); else return array[i]; }}

?

读书人网 >行业软件

热点推荐