一.快速排序 算法导论上关于快速排序有两种写法 第一种,从头到尾遍历,不断将小于基准元素的项移到前面.代码很简介,只需要维护一个交换位置,表示小于基准元素的末尾位置加一 我们看算法导论上的一个例子: 代码实现(代码中用p记录上面i+1的位置,pos2应该为数组长度减1): void quicksort(vector<int>& v, int pos1,int pos2) { if (pos1 >= pos2) return; int p = pos1; for (int i =…
问题1 用来测试的,就不说了 问题2:中位数附近2k+1个数 给出一串整型数 a1,a2,...,an 以及一个较小的常数 k,找出这串数的中位数 m 和最接近 m 的小于等于 m 的 k 个数,以及最接近 m 的大于等于 m 的 k 个数.将这 2k+1 个数按升序排序后输出. 中位数定义:如果数串的大小是偶数 2j,中位数是从小到大排列的第 j 个数:如果数串的大小是奇数 2j+1,中位数是从小到大排列的第 j+1 个数. 输入 第一行是 k 的值和数串的长度 n. 第二行是以空格隔开的 n…