1.插入法
整体思路如下:建立一个数组长度为k的数组orderArray,把原数组array中最左侧的k个元素放入orderArray,对orderArray排序,接着从k开始遍历原数组array,与orderArray的最后一个元素比较,即orderArray[k-1],如果比orderArray[k-1]大,说明应插入到orderArray中。接着拿这个比orderArray[k-1]大的元素和orderArray中的元素一一比较,确定插入位置,最后将元素插入。
代码如下:
/**
* 插入法
* @param array
* @param kth
* @return
*/
public static int kthBig(int[] array, int kth) {
int[] orderArray = new int[kth];
for(int i = 0; i < kth; i ++) {
orderArray[i] = array[i];
}
//给orderArray排序
for(int i = 0; i < orderArray.length; i ++) {
for(int j = 0; j < orderArray.length - i -1; j ++) {
if(orderArray[j] < orderArray[j + 1]) {
int temp = orderArray[j];
orderArray[j] = orderArray[j+1];
orderArray[j+1] = temp;
}
}
}
//遍历array数组中从kth开始的元素,和orderArray的最后一个元素比较ÿ