分治算法基础题。。。。但我快崩溃了。。。TAT
牛人请留步啊啊!!只需要求解一下分治算法思想。。。。菜鸟连个可以讨论的人都没有。。。真的好痛苦。。。。
分治算法
[解决办法]
先给K排序,然后每次把K给折半,用线性选择在原数组里找出K[r/2],并且把原数组分成大于和小于这个数的两部分,小于的那部分再去递归做K[1..r/2-1],大于的那部分再去递归做K[r/2+1..r]。
稍微画一个树就知道,K折半的每一层加起来的代价都是线性,因为一共有logr层,所以复杂度nlogr。