“数组、全序与分治构成静态选择框架。Quickselect 的期望 $O(n)$ 针对随机枢轴和固定输入,median of medians 则给比较/RAM 模型下的确定性最坏 $O(n)$…”
形式陈述 ​
支持两种基本操作:按下标读取
直觉
数组是“以自然数初始段为定义域的有限函数”在机器上的直接化身:下标算术取代了查找,这就是随机访问快的全部原因——地址由一次乘加算出,与
例子与边界
数组
边界情形多源于“数组”一词的多义。定长数组与动态数组不是同一个 ADT:后者添加了改变长度的操作,其尾部追加的
长度为 base + i * sizeof(T)。越界访问在低级语言中不自动产生合法元素;尾部追加、容量翻倍及其摊还证明由动态数组条目统一处理。
推论与应用
数组是大量上层结构的底座:二分查找依赖
“随机访问
参考资料
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, 4th ed., MIT Press, 2022, Chapter 10。
- Robert Sedgewick and Kevin Wayne, Algorithms, 4th ed., Addison-Wesley, 2011, §1.4。