具体的代码实现:
import java.util.Stack;
/** * @author wuwh
* @date createTime:2016年3月6日 上午12:23:14 */
public class KthBiggest {
public static int find(int[]array, int k)
{
//定义一个比k大1长度的临时数组
int[]tempArray = new int[k+1];
//把原始数组array的前k个元素拷贝到临时数组tempArray中
for (int i = 0; i < k; i++) {
tempArray[i] = array[i];
}
//对tempArray的前k个元素进行快速排序
QuickSort.sort(tempArray, 0, k-1);
//遍历原始数组array中下标为从k到array.length-1的元素
//根据插入排序的思想:若小于tempArray前k个元素的任意值,则插入到合适的位置...
for (int i = k; i < array.length; i++) {
int j=k-1;
for (;j >= 0&&array[i]<tempArray[j]; j--) {
tempArray[j+1] = tempArray[j];
}
tempArray[j+1] = array[i];
}
return tempArray[k-1];
}
public static void main(String[] args) {
int[]array = {1,9,22,33,123,3,2,5,7,11};
int index = 4;
System.out.println("数组array中第"+index+"大的元素为::"+find(array,index));
}
}