对数组进行排序的最小“插入”次数

2023-12-11

假设有一个无序列表。我们唯一能做的操作就是移动一个元素并将其插入回任何位置。对整个列表进行排序需要多少步?

我想答案是size of the list - size of longest ordered sequence,但我不知道如何证明这一点。


首先请注意,移动元素不会改变除被移动元素之外的元素的相对顺序。

考虑最长的非递减子序列(与最长递增子序列- 找到它们的方式是相似的)。

通过仅移动不在此序列中的元素,很容易看到我们最终会得到一个排序列表,因为此序列中的所有元素都已相对于彼此排序。

如果我们不移动该序列中的任何元素,则该子序列中两个元素之间的任何其他元素都保证大于较大的元素,或小于较小的元素(如果这不成立,则它本身将位于最长的序列),因此需要移动它。
(例如见下文)

它必须是非递减的吗?是的。考虑该序列中的两个连续元素是否在递减。在这种情况下,如果不移动这两个元素,就不可能对列表进行排序。

为了最大限度地减少所需的移动次数,选择最长的序列就足够了,如上所述。

因此,所需的移动总数是列表的大小减去最长非递减子序列的大小。

一个例子解释不在上述非递减子序列中的元素的值:

考虑最长的非递减子序列1 x x 2 x x 2 x 4 (the x是一些不属于序列的元素)。

现在考虑一个可能的值x之间2 and 4.

如果是 2、3 或 4,则最长的子序列将包含该元素。如果它大于4或小于2,需要移动它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对数组进行排序的最小“插入”次数 的相关文章

  • 如何在休眠中按条件对列表进行排序

    我是 Spring3 和 Hibernate 的新手 以下代码效果很好 但我试图找到一种方法让我的列表按日期字段排序返回 有人可以告诉我如何向此代码添加排序吗 To get list of all articles SuppressWarn
  • 更合适地说插入未排序动态数组的摊销 O(1) 与 O(n) ?

    这属于 stackoverflow com help on topic 中的 软件算法 在本例中 是一种将项目添加到动态未排序数组的软件算法 This is chart we made in class about the runtimes
  • 像多米诺骨牌一样对 Python 中的元组进行排序/查找顶点连接

    我有一个像这样的整数元组列表 L 1 2 7 6 2 3 8 5 3 8 5 7 每对定义两个顶点之间的边 我想找到顶点连接性 没有循环 元组总是像多米诺骨牌一样唯一地链接起来 因此在这种情况下 排序列表应如下所示 L sorted 1 2
  • 查找文本中所有关键字的有效算法

    我有很多字符串 其中包含许多不同拼写的文本 我通过搜索关键字来标记这些字符串 如果找到关键字 我将使用该关键字的关联文本 假设搜索字符串可以包含文本 schw schwa 和 施瓦茨 我有三个关键字 全部解析为文本 schwarz 现在我正
  • 在 3d 网格中转发(绘制)线

    我需要类似 Bresenham 算法的东西 但是 对于 3d 网格空间来说不完全是这样 我需要 3d 单元网格 边缘尺寸 1 0 从 S 点开始 前进到 K 点 接触 该线接触的所有单元格 即使只有边缘 点被触摸我需要触摸所有 8 个单元
  • javascript中的父子关系排序

    我有以下结构 category id 1 parent category null category id 2 parent category 1 category id 3 parent category 1 category id 4
  • 自动跟踪算法

    我正在尝试写一个simple跟踪例程来跟踪电影中的某些点 本质上我有一系列 100 帧长的电影 在黑暗背景上显示一些亮点 我每帧有大约 100 150 个点 它们在电影的过程中移动 我想跟踪它们 所以我正在寻找一些有效的 但可能不会过度实施
  • 字符串插值搜索

    对于那些不熟悉插值搜索的人来说 这是一种在排序数组中搜索值的方法 可能比二分搜索更快 您查看第一个和最后一个元素 并 假设数组的内容均匀分布 线性插值以预测位置 例如 我们有一个长度为 100 的数组 其中 array 0 0 和 arra
  • 在 C# 中对由整数组成的多维 [] 数组进行排序

    我有以下数组 private int testSamples new testSamples 101 101 它应该代表一个名册 第0到100列 第0到100行 在这个名册中 掉落了各种化学液体 我为之做这件事的人希望以这样的方式工作 他可
  • 如何求两个地点的经纬度距离?

    我有一组位置的纬度和经度 怎么找distance从集合中的一个位置到另一个位置 有公式吗 半正矢公式假定地球是球形的 然而 地球的形状更为复杂 扁球体模型会给出更好的结果 如果需要这样的精度 你应该更好地使用文森特逆公式 See http
  • Highcharts 对堆积条形图进行排序

    我没有看到任何与我在 Highcharts 中遇到的确切场景相匹配的解决方案 因此我将我的发现发布在这里 我在 Highcharts 中有一个堆积条形图 需要按值从大到小对条形图进行排序并维护它们的类别关系 通常 首选解决方案是在将数据发送
  • heapq.nlargest 的时间复杂度是多少?

    我在看演讲者说 获得t列表中最大的元素n元素可以在O t n 这怎么可能 我的理解是创建堆将是O n 但是复杂度是多少nlargest本身就是O n t or O t 实际的算法是什么 在这种情况下 说话者是错误的 实际成本是O n log
  • 在 C# 中对 Directory.GetFiles 的结果进行排序

    我有这段代码来列出目录中的所有文件 class GetTypesProfiler static List
  • 求先递增后递减列表的最大值和最小值

    我尝试用谷歌搜索这个问题 但没有取得太大成功 我确信这个问题或类似问题有一个技术名称 但我似乎找不到答案 给定一个列表L整数 即严格递增 然后严格递减 找到该列表的最大值和最小值 例如 L可能 1 2 3 4 5 4 3 2 or 2 4
  • 贝尔曼福特算法可以有任意的边顺序吗?

    我刚刚开始学习新算法 但当我阅读 极客为极客而写的贝尔曼福特算法 时 我陷入了困境 http www geeksforgeeks org dynamic programming set 23 bellman ford algorithm h
  • 按相反顺序对列表进行排序

    我有直接顺序的列表 list1 List
  • c# GDI边缘空白检测算法

    我正在寻找解决方案检测边缘空白c 位图 来自 c 托管 GDI 库 图像将是透明的 or white 大多数 400x 图片的尺寸为 8000x8000px 边缘周围有大约 2000px 的空白 找出边缘的最有效方法是什么 x y 高度和宽
  • “Desort”向量(撤消排序)

    在Matlab中 sort返回排序后的向量和索引向量 显示哪个向量元素已移动到以下位置 v ix sort u Here v是一个包含所有元素的向量u 但已排序 ix是一个向量 显示每个元素的原始位置v in u 使用 Matlab 的语法
  • 删除近排序数组中未排序/离群元素

    给定一个像这样的数组 15 14 12 3 10 4 2 1 我如何确定哪些元素乱序并删除它们 在本例中为数字 3 我不想对列表进行排序 而是检测异常值并将其删除 另一个例子 13 12 4 9 8 6 7 3 2 我希望能够删除 4 和
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O

随机推荐

  • UIImageView .scaleAspectFit 和自动布局无法从 Swift 以编程方式工作

    我有几个部分透明的 PNG 叠加层 可以在视图中相互叠加显示 覆盖的数量根据运行时条件而变化 我想创建UIImageViewSwift 中的实例并将它们添加到视图中 添加时我没有任何问题得到我想要的行为UIImageView在故事板中并通过
  • Python 相当于 JavaScript 函数对象

    我想知道是否有Python相当于这个JavaScript构造 var myFunctions greet function name return Hello name farewell function time return See y
  • SHA1 C# 相当于此 Java

    在 C 中寻找与此方法相同的等效项 try MessageDigest md MessageDigest getInstance SHA 1 md update password getBytes BigInteger hash new B
  • 非英文字符在我的 php 页面上显示为问号 - 在数据库中显示正常

    我有一个 MySQL 数据库表 其中填充了非英语数据 当我在 Navicat MySQL 浏览器中查看数据时 数据显示正常 但是 当我运行 php 脚本来选择并在网页上显示数据时 它会显示问号 页面编码设置为 utf8 甚至 MySQL 排
  • 如何在Matlab中进行GF(2)的逆运算和GF(256)的乘法?

    我有一个二进制矩阵A only 1 and 0 和一个向量D在伽罗瓦域 256 向量C计算如下 C A 1 D where A 1表示矩阵的逆矩阵A in GF 2 是乘法运算 结果向量C必须在GF 256 我尝试用Matlab来做 A 1
  • Windows 身份验证的 asp.net mvc 应用程序中每个资源(2 x 401.2 和 1 x 200)有 3 个请求

    当我拉出 Fiddler 并意识到每个请求都被发送了 3 次 两次我得到 401 2 然后成功 时 我试图找出为什么我的网站在 IE9 中如此缓慢 我验证了这种情况在所有浏览器上都会发生 只是 Chrome 的速度掩盖了这一点 或者这可能与
  • 递归斐波那契函数(带负数)

    我可以为所有大于 0 的数字编写递归斐波那契函数 但该函数对于任何负数都是完全错误的 知道如何在 C 中实现这个吗 int fibonacci int n if n 0 return 0 if n 1 return 1 return fib
  • Vagrant 端口转发不起作用

    我已经在我的电脑上安装了 CouchDBvagrant 0 9 0正在运行的盒子CentOS 6 2 In 流浪文件我已经添加config vm forward port 5984 5985 重新加载流浪汉后 我尝试卷曲地址 curl v
  • 如何在C++中将较大的字符串减少为较小的字符串?可能是通过散列?

    我想在 C 中将较大的字符串压缩为较小的字符串 在 C 中执行此操作有哪些不同的方法 要求是输出也应该是字符串 好吧 如果您以后不需要解压缩它 string s xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx s E
  • 在 geom_密度_脊上画线

    我试图在 ggridges 的密度图中画一条线 library ggplot2 library ggridges ggplot iris aes x Sepal Length y Species geom density ridges re
  • 将 Excel 中的值除以一组预设值,以找出每个值需要多少个

    我很好奇是否有办法让我的生活更轻松 在 Excel 中 我生成一个总值 例如 750 并且需要从 50 100 200 250 500 的值中找出我需要多少个管道订单 无论如何 有没有办法让excel取一个值 然后返回我需要的每个数字的数量
  • 如何更改绘图标题和轴标签的字体大小并保存?

    每次我将绘图图片保存为 jpg 或 png 时 标题和轴标签的字体大小都会自动更改回默认值 我的代码是这样的 figure plot x f x title the smallest n 1 FontSize 24 xlabel x Fon
  • SQL排序不遵循group by语句,总是使用主键

    我有一个 SQL 数据库 其中有一个名为staff 具有以下列 workerID Prim key name department salary 我应该找到每个部门工资最高的工人 并使用以下语句 select staff workerID
  • ColdFusion CFHTTP 和 SSL 证书

    背景 当我尝试使用 CFHTTP 连接到 API 时 我一直遇到连接失败错误消息的问题 在查看 SoapUI 中的 API 时 我注意到有一个按钮SSL Info 3 certs 概述如下 当我单击该按钮时 会弹出一个副本窗口 其中概述了下
  • Android 设备 adb 在 linux/Mac 上始终未经授权

    我不得不处理这个问题几次 每次我都会忘记原因是什么 直到我深入挖掘 所以这是症状 每次重新连接 重新启动设备时 您都会收到授权对话框 即使您可以swear你检查了Always上次勾选了 adb shell给你下面的简介 adb device
  • 为什么在 C 中执行算术运算后会丢失值的余数?

    我正在尝试通过遵循以下内容来学习基本的 C 编程textbook我一定遗漏了一些关于数据类型 舍入和 或运算顺序的信息 因为当我尝试构建一个简单的程序将秒转换为小时和分钟时 小时有效 但剩余分钟在它们出现时变为 0不应该是 谢谢Course
  • 如何将外部 HTML 文件导入 TypeScript 类

    我正在尝试构建一个正在使用的 JavaScript 包Webpack将 TypeScript 文件及其所有导入编译为单个 JavaScript 文件 该包的主要目标是按照一组给定的条件向任何使用该包的应用程序输出 HTML 目前 我通过使用
  • Django Admin 中有“DetailView”吗?

    我知道 Django 管理中有一个更改 更新视图 但是是否有任何详细视图仅列出记录的属性 有点像 Django 应用程序中的 DetailView 或者有人知道我可以安装任何第三方软件包来提供相同的功能吗 我最近也在调查这个问题 一种有效的
  • 查询 JSON 列中数组的元素

    最近升级到使用 PostgreSQL 9 3 1 来利用 JSON 功能 在我的表中 我有一个 json 类型列 其结构如下 id 123 name foo emails id 123 address somethinghere id 45
  • 对数组进行排序的最小“插入”次数

    假设有一个无序列表 我们唯一能做的操作就是移动一个元素并将其插入回任何位置 对整个列表进行排序需要多少步 我想答案是size of the list size of longest ordered sequence 但我不知道如何证明这一点