期望和平均情况差在哪

随机快排的期望复杂度,和普通快排的平均情况复杂度,区别是【0】。

开始练习 →

固定取第一个最坏和最好

五个元素的全部 120 种排列,快排总是拿第一个当枢轴,比较次数的最大值和最小值: #include <algorithm> #include <iostream> #include <string> #

开始练习 →

120 种输入比较次数总和

把全部 120 种排列的比较次数加总: #include <algorithm> #include <iostream> #include <string> #include <vector>

开始练习 →

数出快排的比较次数

补全划分那两步,输出 120 种输入里的「最坏比较次数/总和」。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

最坏输入里就有有序的

算出最坏比较次数之后,再看看已经排好序的输入 {0,1,2,3,4} 花了多少次,以及它是不是正好就在最坏那一档(是就 1)。输出「最坏/有序输入的次数/是否最坏」。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

期望正好等于那个平均

随机快排的期望比较次数(expect(5)),和「固定取第一个」在全部 120 种输入上的平均,把这两个数比一比。用分数算,别用浮点。输出「期望的分子/分母/相等或不等」。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

期望不随输入而变

三个输入:已排好序、完全逆序、乱序。固定取第一个当枢轴各比多少次?再判一下随机枢轴的期望在这三个输入上是不是同一个数。输出如 10/10/6/不随输入变。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

为什么别用 rand() 取模

第 1 步:同样排好序的 6 个数 第 2 步:随机抽到了中间那个 第 3 步:两边各剩差不多一半 第 4 步:每边再随机抽一个 第 5 步:层数只有 log n 那么多 1 2 3 4 5 6 竞赛和工程里都不推荐用 rand() % n

开始练习 →

给 mt19937 固定种子

写 mt19937 rng(2026); 给随机数引擎固定一个种子,好处是【0】。

开始练习 →

均匀分布取值的范围

uniform_int_distribution<int> d(1, 6); 产生的是【0】。

开始练习 →