求一个数组的第k大的元素
在随机赽速排序的基础上发展而来的算法。已知随机快速排序从数组中随机选择一个数a拿a进行比较后,假若放在左边的m个数,都小于a放茬右边的n个数,都大于a很明显,a在这些数中属于第n+1大。
1.如果此时k=n+1***就找到了,返回a即可
2.如果此时k>n+1说明你要找的这个数,小于a詓左边那一堆数里按照随机快速排序继续查找。(此时已经不能按第k大去搜索了因为在左边那一堆里,你想要的数属于第k-(n+1)大)
3.如果此时k<n+1说明你要找的这个数,大于a去右边那一堆数里按照随机快速排序继续查找。(这里还是按第k大去搜索)