读书笔记 本小节对快速排序在三种情况下的性能进行了分析,我自觉没有书上说得好,所以直接上图片。 最好和最坏情况 平均情况 课后习题 7.2-1 利用代入法证明:正如7.2节开头提到的那样,递归式T(n)=T(n−1)+θ(n)T(n)=T(n−1)+θ(n)的解为T(n)=θ(n2)T(n)=θ(n2)。
排序问题之快速排序 Partition(A, p, q):假设我们要对一个输入规模为n的序列A[p,p+1, ... , q]进行排序,我们可以选择头部A[p]为主元pivot,把小于pivot的元素都交换到pivot左边,大于它...,所以我们可以采用随机化的方法来避免。一种简单的随机化策略是每次分区之间随机的选取pivot,而非选取第一个的值...
7-2 冒泡法排序 (30分) 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N−1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就完成了对N个数的排序。
(edge + 1, edge + 1 + m, cmp);//快速排序 for (i = 1; i <= m; i++){ a = Find(edge[i].v1); b = Find(edge[i].v2); if (a != b) {//当a==b时,a点指向自己,这是形成了环路,也就是说这v1,v2已经加入最小生成树中 parent[a] = b; sum += edge[i].w; } } ...
C.快速排序 D.直接插入排序√ 解析:直接插入排序在已经排序好的序列的适当位置上插入关键字,因此可能需要移动元素。 10.操作系统为了管理文件,设计了文件控制块(FCB)。FCB是执行系统调用( )时建立的。 (分数:2.00) A.create B.open√ C.read D.write 解析:文件控制块是调用OPEN时建立的。 11.某机器字长16位...
第8章排序7--8.3交换排序3--快速排序2--快速排 42 2023-08 3 第8章排序8--8.4选择排序1--简单选择排序 20 2023-08 4 第8章排序9--8.4选择排序2--堆排序 47 2023-08 5 第8章排序10--8.4选择排序3--堆排序2--堆调整 23 2023-08 6
题目问第二趟排序的结果,即要找不存在2个这样的数的选项。A选项中2、3、6、7、9均符合,所以A排除;B选项中,2、9均符合,所以B排除;D选项中5、9均符合,所以D选项排除;最后看C选项,只有9一个数符合,所以C不可能是快速排序第二趟的结果。 知识模块:数据结构...
听说香港中文大学有一个教授开发了一个“投注方程式”来赌马,三个赛季就赚了 5000 万港币。现在请你来开发一个简单的赌马程序:假设开赛若干分钟之内都可以下注,而你可以准确获得截止时间最后一刻每匹马到终点的距离和它的瞬时速度,这样你就可以算出每匹马到达终点还需要多少时间。每次下注预测的前三名,中奖的几率是...
我们知道,对n个关键自序列进行一趟快速排序,要进行n-1次比较, 也就是基准和其他n-1个关键字比较。 这里要求10次,而7 - 1 + 2 * ( 3 - 1 ) = 10,这就要求2趟快速排序后,算法结束。 所以,列举出来的序列,要求在做partition的时候,正好将序列平分 (1)4 1 3 2 6 5 7 或4 1 3 7 6 5 2 或...
struct Point{ int x,y;};Point p[1000];//输入n个x,y坐标对,按照x从小到大排,x相同则按y从小到大排 bool cmp(Point a, Point b){ if (a.x!=b.x) return a.x<b.x;else return a.y<b.y;} sort(p, p+n, cmp);要知道排序原理的话,网上有很多资料可以参考,sort是c++的,...