背景:求无序数组中第k小的数
分治算法:https://www.bilibili.com/video/av12681389/index_27.html#page=30
一般的思路都很多,sort,Heap,Partion
需要说明的是Partion并不能保证O(N)的最坏复杂度,因为中心枢纽是随机选的,不能保证后续的递归量分的均匀,而本文要介绍的方法是可以做到保证O(N),思路类似于Partion,但是区别,也是关键在于中心枢纽的选择,具体步骤如下:
费很大的劲来求king这个枢纽的目的在于减小后续递归的量,每次至少能减小0.3N