时间复杂度O(nlogn)很容易联想到快速排序,结合题目暗示的顺序无关可以进一步优化快排变成半边快排。 首先,简单说一下快排的中心思想,为后续解释做准备。快排的基础是递归,每次递归都会有一个中间值,保证中间值左边的数小于中间值,右边的数大于中间值;然后进行递归,以中间值为分界线对左边数组进行快排,再对右边数组进行快排。 通常一层快排结束后,需要对两边分别进行迭代快排。 但如果只需找最小的K个数,就可以在快排基础上进一步优化: 1、如果中间值位置index恰好等于K-1,那么不必再进行进一步排序,左边的K个数字即是答案(这K个并不一定有序); 2、如果中间值小于K-1,那么左边这K个数字必定在答...