归并离理论极限还差几次
把下界、归并的最坏比较次数、以及两者的差一起输出。
⚠️ 摊还和「平均情况」差在哪
都带个"平均"的意思,但摊还分析和平均情况复杂度说的不是一回事。摊还说的是【0】。
单次最坏还是很慢,凭什么说它便宜
动态数组扩容那一次要搬走一整排元素。还敢说 append 是常数代价,理由是【0】。
容量翻倍,十六次 append 一共搬了多少
从容量 1 开始,满了就翻倍。做 16 次 append,一共搬动了多少个元素? N = 16 def moves(n, grow): """模拟 n 次 append。返回 (一共搬了多少个元素,
⚠️ 改成每次只加一格呢
同样 16 次 append,但这次满了只把容量加一: N = 16 def moves(n, grow): """模拟 n 次 append。返回 (一共搬了多少个元素, 单次最多搬几个)"
自己写:把搬移次数数出来
补全扩容那三步,输出总搬移个数和单次最多搬了几个。
两种扩容策略,总账差多少
翻倍 和 每次加一,两种策略在 16 次 append 上的总搬移个数一起输出。
🔴 规模翻一倍,两边各涨多少
把 n 从 16 涨到 32,两种策略的总搬移各变成多少?按 翻倍16 / 翻倍32 / 加一16 / 加一32 的顺序输出。
交付:单次很贵 + 平摊很便宜,同时成立
摊还分析的结论有两半,缺一半就说不清。把两半各验一次,再验它们同时成立。
随机化解决的是什么麻烦
快排里把"取第一个"换成"随机取一个",解决的是【0】。