nianhua120的专栏

转载请注明csdn的地址,谢谢。

自己练习的找第K大的数。

用的是快排的思想,可以实现前k个最大的数。

/**
 * Created by kyle on 2016/5/30.
 */
public class KstNumber {

    static int  partioion(int[] array, int start, int end, int k ){
        int result;
        int i= start;
        int j = end;
        int reference = array[start];
        do{
            while(array[j]>reference && i<j) j--;
            if(i< j) array[i++] = array[j];
            while(array[i]<= reference &&  i< j) i++;
            if(i<j) array[j--]= array[i];
        }while(i< j);
        array[i]= reference;
        if(i == k){
            System.out.println("over");
            return  array[i];
        }
        if( i < k){
            return  partioion(array,i+1, end, k);
        }else {
            return  partioion(array, start, i-1, k);

        }
    }



    static  public  void main(String[] args){
        int[] a= {12012, 3, 945, 965, 66, 232, 65, 7, 8, 898, 56, 878, 170, 13, 5};
        int num = partioion(a,0, a.length-1, 4);
        System.out.println("the kst number is "+num);
    }
}


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nianhua120/article/details/51538652
文章标签: k大的数
个人分类: 算法
上一篇JamesMusic浅读--------6,补全欢迎界面,音乐文件数据库
下一篇LeetCode199 打印树最右边的值
想对作者说点什么? 我来说一句

查找数组中第k大的数

2016年01月08日 669B 下载

没有更多推荐了,返回首页

关闭
关闭