美文网首页
QuickSort的好哥们QuickSelect

QuickSort的好哥们QuickSelect

作者: 想当厨子的程序员 | 来源:发表于2018-08-24 09:19 被阅读0次

第k大元素

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

样例

给出数组 [9,3,2,4,8],第三大的元素是 4

给出数组 [1,2,3,4,5],第一大的元素是 5,第二大的元素是 4,第三大的元素是 3,以此类推。

挑战

要求时间复杂度为O(n),空间复杂度为O(1)。

注意事项

你可以交换数组中的元素的位置。

代码:

import random
class Solution:
    def kthLargestElement(self, k, A):
        middle = random.randint(0, len(A)-1)
        A_big = []
        A_small = []
        num = 0
        for index in range(0, len(A)):
            if(A[index]>A[middle]):
                A_big.append(A[index])
            elif(A[index]==A[middle]):
                num=num+1
            elif(A[index]<A[middle]):
                A_small.append(A[index])
        if(len(A_big)==k-1):
            return A[middle]
        elif(len(A_big)>k-1):
            return self.kthLargestElement(k, A_big)
        elif(len(A_big)<k-1):
            return self.kthLargestElement(k-len(A_big)-num, A_small)

QuickSelect很容易理解,就是使用QuickSort的思想。

另外,QuickSort学习可以参考这个:

https://blog.csdn.net/u013309870/article/details/68921848

附上题目来源:

https://www.lintcode.com/problem/kth-largest-element/description

相关文章

  • QuickSort的好哥们QuickSelect

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

  • 区别Quicksort vs QuickSelect

    做两家高频题K nearest points的时候有一种expected解法是Average O(n)的, 就是运...

  • 好哥们

    今天一个刚认识两个多月的同事坐飞机离开了这座认人又爱又恨的城市,我没有送他,走的太急,意料之外,因为没有送他,心里...

  • 好哥们

    【壹】 公交车到站,“前方,市一中”的声音响亮,原本拥堵的车厢一下子空了。学生们穿各种色彩的服装,拎各种重量的包裹...

  • 好哥们

    第一章 上学 阿姆斯特郎 今天是个阳光明媚的日...

  • 好哥们

    每当学到新知都会感觉非常快乐。 晚上参加群里的即兴演讲的比赛,点评的老师特别优秀。在点评的同时,顺便给我们分享了一...

  • 好哥们

    有个好哥们,生活会变得非常不一样,想喝酒吃饭,都得要有伴来陪,否则意思会差很多。

  • java快速排序

    public class QuickSort { public static void quickSort(int...

  • 3.1.0 快速排序

    quicksort

  • 我的好哥们

    昨晚凌晨,我突然醒来。望着漆黑的房间,我却再也没有睡眠。 我突然想到了麦芒。 麦芒是我的好哥们,他这一路帮了我很多...

网友评论

      本文标题:QuickSort的好哥们QuickSelect

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