arrays - 非优化排序算法,使用哪一种?
问题描述
排序数组的最后一个元素被替换为数组中不存在的随机值。应该使用哪个经典的(即非优化的)排序算法版本来尽可能有效地对该数组进行排序?
解决方案
由于除了最后一个元素之外,数组已排序,因此不需要排序。
只需从数组中删除最后一个元素,并将其插入到正确的位置。花费O(log n)时间来找到插入它的位置。
Ps
正如@Henry 所指出的,实际插入数组(至少在大多数编程语言中)将花费另一个O(n)时间,因为它很可能意味着将所有元素向右移动一个以释放我们想要的位置插入我们的元素。
推荐阅读
- c# - 如何检查单元格是否为空。c#/datagridview
- vba - 填写网络表单时,VBA 对象不支持属性或方法
- python - 属性错误:
。范围 - r - 为什么 R 在加载库(tidyverse)时会显示 unicode 符号?
- python - 带有常用选项的 Python 多命令 CLI
- node.js - 尝试全局安装实时服务器时出错
- opencv - 使用 Tesseract 和 Opencv 程序进行 OCR 会遇到一些错误
- php - 如何显示网站访问者的 IPv4 和 IPv6 地址
- python - 从今天即 2019-12-18 开始,在气流中安排一个 DAG 每 5 分钟运行一次
- javascript - Jquery 显示和隐藏无法正常工作