剑指offer 最小的K个数:
基于partition函数、基于数组的第k个数来调整,使得小于第k个数字的所有数字都位于数组的左边。同理,大于第k个数字的所有数字都位于数组的右边。
Partition函数具体思路就是基于坑(基准)的快拍思想:时间复杂度o(n)
(思想见快排概念)
题目具体做法:题目中要注意对k的处理
Leetcode215 Kth Largest Element:
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.
Example 1:
Input: [3,2,1,5,6,4] and k = 2
Output: 5
Example 2:
Input: [3,2,3,1,2,4,5,5,6] and k = 4
Output: 4
Note:
You may assume k is always valid, 1 ≤ k ≤ array's length.
Method1 快排:
Method2:利用快排的分治思想实现partation函数