美文网首页
第k大元素

第k大元素

作者: 小时候浪死了 | 来源:发表于2018-09-17 21:56 被阅读0次

(lintcode上面的题解)
第k大元素:
(从小到大的排序)

int kthLargestElement(int n, vector<int> &nums) {
        // write your code here
        return findkth(nums,0,nums.size()-1,nums.size()-n);
    }
    void swape(vector<int>& nums,int i,int j)
    {
        int temp=nums[i];
        nums[i]=nums[j];
        nums[j]=temp;
    }
    int findkth(vector<int>& nums,int low,int high,int k)
    {
        int i=low;
        int j=high;
        int mid=(i+j)/2;
        int mid_value=nums[mid];
        while(i<j)
        {
            while(nums[i]<mid_value&&i<=j)
            {
                i++;
            }
            while(nums[j]>mid_value&&i<=j)
            {
                j--;
            }
            if(i<=j)//也就是上面nums[i]>mid_value&&nums[j]<mid_value,所以要交换
            {
                swape(nums,i,j);
                i++;
                j--;
            }
        }
        if(k>i)
            return findkth(nums,i,high,k);
        if(k<j)
            return findkth(nums,low,j,k);
        return nums[k];
    }

相关文章

  • 快速排序

    在数组中找到第k大的元素

  • QuickSort的好哥们QuickSelect

    第k大元素 在数组中找到第k大的元素。 样例 给出数组 [9,3,2,4,8],第三大的元素是 4 给出数组 [1...

  • 算法分析 [最大/小值] 2019-02-28

    1. 数组,查找第k大值 215. 数组中的第K个最大元素(元素不重复无序) Kth Largest Elemen...

  • 数据流中的第K大元素

    数据流中的第K大元素 设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。

  • lintcode 5 寻找第k大数

    5. 在数组中找到第k大的元素 在数组中找到第k大的元素 参考 先排序,再查找。最简单,但是最麻烦,如果不止一次的...

  • 力扣 215 数组中的第K个最大元素

    题意:给定一个数组,找到第k个最大的元素 思路:利用快速排序,快速定位第k大的元素,具体可看代码注释 思想:快速排...

  • Leetcode 703 数据流中的第K大元素

    数据流中的第K大元素 题目 设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个...

  • 基本算法——BFPRT线性查找算法

    BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分 析,BFPR...

  • 线性查找法(BFPRT)

    BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分 析,BFPRT可...

  • 第k大元素

    (lintcode上面的题解)第k大元素:(从小到大的排序)

网友评论

      本文标题:第k大元素

      本文链接:https://www.haomeiwen.com/subject/hdtjnftx.html