更多代码和Leetcode题目解析请看这里
Quick select
算法通常用来在未排序的数组中寻找第k小/第k大的元素。其方法类似于Quick sort
。Quick select
和Quick sort
都是由Tony Hoare发明的,因此Quick select
算法也被称为是Hoare's selection algorithm
。 Quick select
算法因其高效和良好的average case时间复杂度而被广为应用。Quick select
的average case时间复杂度为O(n)
,然而其worst case时间复杂度为O(n^2)
。 Quick select
采用和Quick sort
类似的步骤。首先选定一个pivot
,然后根据每个数字与该pivot
的大小关系将整个数组分为两部分。那么与Quick sort
不同的是,Quick select
只考虑所寻找的目标所在的那一部分子数组,而非像Quick sort
一样分别再对两边进行分割。正是因为如此,Quick select
将平均时间复杂度从O(nlogn)
降到了O(n)
。Input: array nums, int k. (find kth smallest element in an unsorted array)
Output: int target
- Choose an element from the array as pivot, exchange the position of pivot and number at the end of the array.
- The