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

原创 2016年05月30日 15:59:26

用的是快排的思想,可以实现前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);
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

堆的应用——在N个数中找到最大的前K个数

在堆的应用中,有一道很经典的面试题,题目是:“在100w个数中找到最大的100个数”。对于堆的相关知识和堆实现的代码在我的前2前博客中都有详解,对于这道题会有很大的帮助。         让我们来剖析...

无序整数数组中找第k大的数

写一段程序,找出数组中第k大小的数,输出数所在的位置。 原文只有思想,本人加入实现,原文地址http://blog.sina.com.cn/s/blog_54f82cc201013tke.html ...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Java实现:在N个乱序的数组中找第K大的数

类似于快速排序,执行一次快速排序之后,每次只选择一部分继续执行快速排序,直到找到第K大个元素为止,这个元素在数组位置后面的元素即为所求。 时间复杂度:O(n) 利用快排的思想,从数组arr中随机找出一...

一些程序函数 C++语言,找数组中弟第K大的数和自己写的子符串截取函数

最近自己写了一些小函数,调试通过了的,VS2010 C++ 主要是两个函数:找数组中弟第K大的数和第k小的数,以及子符串截取函数、拼接、颠倒输出、字符串中子串出现的次数。

【算法】O(1)空间,不改变原数组的情况下找第K大的数

找到无序数组中第K大的数,这道题蜜汁经典,腾讯和头条的面试中都被问到了,我一般用的都是大小为K的小顶堆和快排扫一半这两种思路做这道题,直到前几天面试头条的时候,终面面试官问,有没有O(1)O(1)空间...

无序整数数组中找第k大的数

写一段程序,找出数组中第k大小的数,输出数所在的位置。 【解法一】 我们先假设元素的数量不大,例如在几千个左右,在这种情况下,那我们就排序一下吧。在这里,快速排序或堆排序都是不错的选择,他...

为算法考试做准备--快速排序以及找第K大数的实现

package utils; import java.util.Random; class ArrayInts{ private int[] theArray; private int nEl...

找一个数组中第K大的数

快排找第K大

每天一道算法题(14)——N个降序数组,找到最大的K个数

题目:       假定有20个有序数组,每个数组有500个数字,降序排列,数字类型32位uint数值,现在需要取出这10000个数字中最大的500个。 思路       (1).建立大顶堆,维...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)