针对问题 找到一对无序的数中第 K 大,或者第 K 小的元素,返回该元素的值或者它的 index(index 的情况比较适合这堆数每个都独一无二的情况,不然可能会有多个答案). 关键思想 拿一个数做参照,其他数通过对比它,来左右放置,得到的结果肯定是这个数在该数组中的排列位置是正确的.(DIvide and Conquer 分治思想) 形象讲解 把所有数字当成一个个球,假设我们要选出第 K 小的那个球. 我们有两个筐:A 和 B. 首先我们随机选择一个球作为参照物,然后我们开始分捡这一堆球:…
最近做了一下算法的一些练习,感觉基础薄弱了,只是用一些已经有的东西来完成练习如quickSort(c++使用的时候是sort(起始位置,终止位置,比较函数),这个需要加头文件),但是不知道怎么推出来,回顾了一下算法导论,也总结了一些经验,写了如下代码(这里是以升序来排列的,但是排序思想就是这样),供大家参考 //用于交换元素位置 void swap(int &a,int &b){ int temp = a; a = b; b = temp;} //划分以及元素的交换 int partiti…