找第k小的数的分治算法
基于快速排序的分治法,先随机选取一个数作为基准,随后比较该数下标index与k值的大小,若index-1>k则第k小的数在现基准左边,取0index-1的部分进行快速排序,若index-1<k则第k小的数在现基准右边,取index+1n的部分进行快速排序,重复以上步骤直到index-1 == k。
2.
最好情况:O(n) 仅进行一次快速排序得到的基准是k
最坏情况:O(n^2) 每次基准都在排序数组的最左边或最右边且不是k
3.
分治法是将问题切分令每个子问题所需要的时间减少,但是合并子问题的过程中可能会因为合并带来的代价太高导致分治法效率下降。分治法采用递归解决必须处理递归边界。
浙公网安备 33010602011771号