给定一个数组,找出数组中第k大的数。其实现代码如下:
package com.threeTop.www;/*** 找出数组中第k大的数* @author wjgs**/
public class FindK {public static void find(int[]array,int begin,int end,int k){int i=partition(array,begin,end);if(i+1>k){//左半部分,递归查找find(array,begin,i-1,k);}else if(i+1<k){//右半部分,递归查找find(array,i+1,end,k);}else{System.out.println("找到了第"+k+"大的数为:"+array[i]);return;}}/*** 每轮快速排序* @param array* @param begin* @param end* @return*/private static int partition(int[] array, int begin, int end) {if(begin<end){ //第一个数作为基准int key=array[begin];while(begin<end){while(begin<end&&array[end]>key){end--;}if(begin<end){array[begin]=array[end];begin++;}while(begin<end&&array[begin]<key){begin++;}if(begin<end){array[end]=array[begin];end--;}}array[begin]=key;}return begin;}public static void main(String[] args) {int []array={1,5,7,9,2,4,6,8,10,12,11,14,15,13};FindK.find(array, 0,array.length-1, 8);}}