归并离理论极限差几次
把下界、归并的最坏比较次数、以及两者的差一起输出。 (本题用 g++ -std=c++17 -O0 编译。)
摊还和平均情况差在哪
都带个「平均」的意思,但摊还分析和平均情况复杂度说的不是一回事。摊还说的是【0】。
单次很慢凭什么说便宜
第 1 步:容量 1,先放一个 第 2 步:满了:翻倍,搬走 1 个 第 3 步:满了:翻倍,搬走 2 个 第 4 步:满了:翻倍,搬走 4 个 第 5 步:放满 8 个,只搬了 7 次 动态数组扩容那一次要搬走一整排元素。还敢说 push
容量翻倍十六次搬多少
从容量 1 开始,满了就翻倍。做 16 次 push_back,一共搬动了多少个元素? #include <algorithm> #include <iostream> #include <string>
改成每次只加一格呢
同样 16 次 push_back,但这次满了只把容量加一: #include <algorithm> #include <iostream> #include <string> #include <
把搬移次数数出来
补全扩容那三步,输出「总搬移个数/单次最多搬几个」。 (本题用 g++ -std=c++17 -O0 编译。)
两种扩容策略总账差多少
「翻倍」和「每次加一」两种策略,在 16 次 push_back 上的总搬移个数一起输出。 (本题用 g++ -std=c++17 -O0 编译。)
规模翻一倍两边各涨多少
把 n 从 16 涨到 32,两种策略的总搬移各变成多少?按 翻倍16 / 翻倍32 / 加一16 / 加一32 的顺序输出。 (本题用 g++ -std=c++17 -O0 编译。)
交付单次贵平摊便宜
摊还分析的结论有两半,缺一半就说不清。把两半各验一次,再验它们同时成立,输出如 过/过/过。 (本题用 g++ -std=c++17 -O0 编译。)
随机化解决的是什么麻烦
第 1 步:已经排好序的 6 个数 第 2 步:取第一个当枢轴:左边空 第 3 步:取第一个当枢轴:左边空 第 4 步:取第一个当枢轴:左边空 第 5 步:取第一个当枢轴:左边空 第 6 步:每层只少一个:很深 1 2 3 4 5 6 快排