c++ - 在O(nlogn)中对数组进行排序的第一个元素插入数?
问题描述
如果只允许移动数组的第一个元素,那么要对数组进行完全排序需要多少次插入?
在输出中,给出必要的插入次数以及每个元素向后移动的位置。
例如:
输入:
6
1 4 2 5 3 6
输出:
4
3 4 2 4
解释:
这是插入的顺序:
4 2 5 1 3 6
2 5 1 3 4 6
5 1 2 3 4 6
1 2 3 4 5 6
我可以在 O(n 2 ) 中做到这一点,因为问题简化为找到第一个元素位于数组增加后缀中的位置。
如何在 O(nlogn) 中解决这个问题?
解决方案
推荐阅读
- vba - 为什么即使我的输入是正确的变量类型,我也会收到 ByRef 参数类型不匹配错误?
- mysql - 在 MySQL 一张表中优化 SQL 查询
- html - Visual Basic 读取 HTML 以使用循环添加到列表
- ruby-on-rails - 具有唯一 To_do_list 的用户
- google-tag-manager - 将复杂数据层中的值放入 GTM 变量中
- javascript - Nativescript ios - 命令 xcodebuild 失败,退出代码为空
- javascript - 如何对多行字符串进行排序?
- laravel - Laravel Eloquent:使用 OrWhere 的多个 Wheres
- sql - 按日期透视 DateTime 字段
- ios - 在 Tableview Swift 中删除 Header View Section 的白色边框底部