一.什么是线性时间选择问题
前几天,女票问到了快速排序,然后我看了一下代码,发现不对呀,为什么连基本的递归都没有,后来仔细看了整个程序之后,发现,这个程序并不是普通的快速排序,而这也就引出了今天要讲的问题,线性时间选择问题,其实它也就是随机化的快速排序,以求加快效率,最快求解。
二.大体思路
RandomizedSelect算法,因为该算法是想要求解在一个序列中某一个等级大小的数,那么这个算法的大体思路其实就是随机选取基准元素,根据基准元素进行分区,小的分在左边,大的分在右边,每次分完之后返回基准元素所在数组中的索引,同时比较等级,小的话在左边查找,大的话在右边查找,那么这样说的话大家是不是又想到了快速排序算法,是不是特别熟悉呢。
三.具体实现