为什么选择排序不稳定?

2024-02-22

这可能是微不足道的,但我不明白为什么默认实现选择排序 http://en.wikipedia.org/wiki/Selection_sort不稳定?

在每次迭代中,您都会找到剩余数组中的最小元素。当找到这个最小值时,您可以选择找到的第一个最小值,并且仅当元素实际上小于它时才更新它。因此,每次迭代时选择的元素是第一个最小值 - 这意味着它是先前排序顺序中的第一个。因此,据我了解,当前排序不会破坏先前对相等元素进行排序生成的顺序。

我缺少什么?


一个小例子:

设 b = B 为

、(其中 a

一个循环后,序列已排序,但 B 和 b 的顺序发生了变化:

、、、

但是,如果您不进行切换,而是插入最小值,则可以实现稳定的选择排序。但为了提高效率,您应该拥有一个支持低成本插入的数据结构,否则您最终会遇到二次复杂度。

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

为什么选择排序不稳定? 的相关文章

  • 哪种数据聚类算法适合检测时间序列事件中未知数量的聚类?

    这是我的场景 考虑在不同地点和时间发生的一组事件 例如 考虑有人在高空记录暴风雨期间城市中的雷击 就我的目的而言 闪电是瞬时的 只能击中某些位置 例如高层建筑 还可以想象每次雷击都有一个唯一的 ID 以便以后可以参考该雷击 这个城市大约有1
  • 如何按值降序对哈希进行排序并在 ruby​​ 中输出哈希?

    output sort by k v v reverse 和钥匙 h a gt 1 c gt 3 b gt 2 d gt 4 gt a gt 1 c gt 3 b gt 2 d gt 4 Hash h sort 现在我有这两个 但我试图按值
  • 搜索/排序算法 - 是否有类似 GoF 的列表?

    我是一名自学成才的开发人员 坦率地说 我不太擅长找出在任何特定情况下使用哪种搜索或排序算法 我只是想知道是否有设计模式 esque 列出了以太坊中可用的常见算法 供我添加书签 就像是 算法名称 带有别名 如果有的话 它解决的问题 大O成本
  • 如何按名字和姓氏排序,然后按 SamAccountName 排序,其中并非所有姓名都有名字和姓氏?

    目前 我有以下内容 来自 LDAP Get context based on currently logged on user PrincipalContext domainContext new PrincipalContext Cont
  • Exposé 布局算法

    我正在制作一些项目 其布局类似于 Mac OS X 在 Expos 中对窗口所做的操作 它适应项目的长宽比和可用区域的长宽比 基本上 可用区域分为行和列 每个单元格 行和列的交集 中放置一个项目 这些项目必须保持其纵横比 此处width h
  • 缩短文本并仅保留重要句子

    德国网站 nandoo net 提供了缩短新闻文章的可能性 如果使用滑块更改百分比值 文本会发生变化并且某些句子会被遗漏 您可以在这里看到它的实际效果 http www nandoo net read article 299925 http
  • 线性代数如何在算法中使用?

    我的几个同行都提到 学习算法时 线性代数 非常重要 我研究了各种算法并学习了一些线性代数课程 但我没有看到其中的联系 那么线性代数如何应用在算法中呢 例如 图的连接矩阵可以带来哪些有趣的事情 三个具体例子 线性代数是现代 3D 图形的基础
  • 使用C标准数学库精确计算标准正态分布的CDF

    标准 C 数学库不提供计算标准正态分布 CDF 的函数 normcdf 然而 它确实提供了密切相关的函数 误差函数 erf 和互补误差函数 erfc 计算 CDF 的最快方法通常是通过误差函数 使用预定义常量 M SQRT1 2 来表示 d
  • 通过分布式数据库聚合作业优化网络带宽

    我有一个分布式 联合数据库 结构如下 数据库分布在三个地理位置 节点 每个节点集群有多个数据库 关系数据库是 PostgreSQL MySQL Oracle 和 MS SQL Server 的混合体 非关系数据库是 MongoDB 或 Ca
  • 删除队列中的最后一个元素

    我需要删除队列的最后一个元素 我唯一可以使用的操作是 Peek 获取第一个元素而不删除它 Enqueue element 向队列末尾插入一个元素 Dequeue 删除第一个元素 IsEmpty true 或 false 队列是否为空 而且我
  • 高维最近邻搜索的最佳数据结构

    我实际上正在处理高维数据 50 000 100 000 个特征 并且必须对其执行最近邻搜索 我知道随着维度的增长 KD 树的性能很差 而且我还了解到 一般来说 所有空间分区数据结构都倾向于对高维数据执行详尽的搜索 此外 还有两个重要事实需要
  • 固定大小集以包含给定集的最大数量

    我有大约 1000 组尺寸 1 4 1 3 3 5 6 4 5 6 7 5 25 42 67 100 是否有可能找到包含最大数量的给定集合的大小为 20 的集合 检查每一个100 80 20 集 效率低下 我不太确定这是 NP 完全的 考虑
  • 在 MongoDB 中,如何根据嵌入对象中的属性对文档进行排序?

    在我的产品集合中 我可以找到已在 GB 地区发布的所有产品 gt db products find release region GB pretty id foo release region GB date ISODate 2012 03
  • Java中如何对对象数组进行排序?

    我的数组不包含任何字符串 但它包含对象引用 每个对象引用都通过 toString 方法返回名称 id 作者和发布者 public String toString return name n id n author n publisher n
  • 解释一下从 N 个给定集合中的每一个中给出第 K 个最大数字的示例?

    今天我尝试解决一个Facebook 编程挑战赛 https facebook interviewstreet com recruit challenges 我遇到的挑战是 酒吧问题 可以找到here https github com alo
  • 如何求小于给定数的最大2次方

    我需要找到小于给定数字的最大 2 次幂 我陷入困境 找不到任何解决方案 Code public class MathPow public int largestPowerOf2 int n int res 2 while res lt n
  • 有人可以解释以下异或属性

    我的一个论坛提到给定的数组n数字 arr 0 n 1 以下条件成立 is the xor运算符 f l r f 0 r f 0 l 1 where f l r arr l arr l 1 arr r 我检查了上面的数组数量和不同的值l an
  • Karasuba算法递归过多

    我正在尝试用 c 实现 Karasuba 乘法算法 但现在我只是想让它在 python 中工作 这是我的代码 def mult x y b m if max x y lt b return x y bm pow b m x0 x bm x1
  • 按偶数和奇数排序

    我想知道是否可以使用 std sort 函数按偶数或奇数对数字进行排序 我有以下代码 但我不确定如何在 std sort 中实现 inline bool isEven const Point n return n getX 2 0 它是否正
  • 数组中连续元素的最大乘积

    我在现场面试的时候被问到了这个算法问题 由于没有要求我签署保密协议 我将其发布在这里寻求答案 给定一个数组REAL不包含 0 的数字 找到产生最大乘积的连续元素 该算法应在线性时间内运行 我考虑过以下方法 使用两个数组 第一个是利用DP思想

随机推荐

  • 如何将 DBContext.Add/Attach(使用 EF Code First 4.1)与嵌套对象结合使用

    问题 将对象 Order 添加到我的 dbcontext 时 该订单的所有嵌套对象都会 读取 到数据库中 尽管嵌套对象是静态数据 并且只应在数据库中添加引用 例子 数据库包含 0 个订单和 3 个项目 我添加了一份包含 2 件商品的订单 现
  • 自动接受用户输入 Windows Batch

    I have a batch file that loads on startup that presents the user with a menu of applications they can choose to load by
  • 如何制作动态 Angular2 管道

    我有以下 UI 按钮 显示全部 类别 1 类别 2 我想用filterBy from ngx pipes https github com danrevah ngx pipes https github com danrevah ngx p
  • 如何从剪贴板粘贴?

    Google Cloud shell 不允许我 粘贴 剪贴板中的内容 我尝试过使用 发送命令 ctrl v 选项 并尝试使用root 我发现它可以与 IE 一起使用 给出一条消息以允许剪贴板访问该页面 但只是一次性的事情 我缺少什么 原来这
  • 记录 Kubernetes 中使用部署部署的 Pod

    我将在下面尝试解释我的问题 使用部署创建一个 Pod 然后使用以下命令对其应用另一个更新kubectl apply f sampledep yaml 如果我们这样做 Pod 名称就会改变kubectl get pods 因此 我们之前的 P
  • Jenkins 在构建和构建后之间挂起

    将 Jenkins 更新到版本 2 156 从版本 1 6 后 我们的一些构建作业在完成后和进行构建后操作之前会陷入困境 作业本身会在 5 分钟内完成 与之前相同 然后挂起 5 10 分钟 然后再继续 我设法将其范围缩小到 Executor
  • 如何在通过Wine运行的Linux程序和Windows程序(同一台计算机)之间共享内存?

    有没有办法 以及如何 在通过 wine 运行的 linux 程序和 windows 程序之间共享内存 由于可能很难理解为什么要做这样的事情 我给你我的情况 我有一个仅为 Windows 编译的专有程序 但该程序有一个开放的 C 插件 API
  • css3 关键帧动画的 SASS(不是 SCSS)语法

    有没有办法在SASS中写入关键帧 我发现的每个例子实际上都是 SCSS 即使它说它是 SASS 需要明确的是 我的意思是没有大括号的 以下是如何在 Sass 语法中实现 css 关键帧 keyframes name of animation
  • Java 9 takeWhile 和 dropWhile 读取并跳过某些行

    我有一个文本文件 其中包含多个报告 每个报告都以文字 REPORT ID 开头 并具有特定值 即 ABCD 对于简单的情况 我只想提取那些具有值 ABCD 的报告的数据 考虑到复杂性 我只想提取 TAG1 值 第二行 为 100037535
  • 如何让 Python 自动创建字典中缺失的键/值对? [复制]

    这个问题在这里已经有答案了 我正在创建一个多层深度的字典结构 我正在尝试做类似以下的事情 dict dict a b True 目前 上述操作失败 因为键 a 不存在 目前我必须检查每个嵌套级别并手动插入一个空字典 是否有某种类型的语法糖能
  • 启动第一个 Django 项目错误

    我的计算机运行 Ubuntu 12 04 我按照本教程开始使用 Django http blog stannard net au 2010 12 11 installing django with apache and mod wsgi o
  • Ffmpeg 在 Electron 沙盒应用程序中中止

    我有一个 Electron 应用程序 发布在 Mac AppStore 上 并且是沙盒的 我正在尝试添加一个新功能 可以动态编码 解码视频 这样我就可以在 Electron 上下文中流式传输更多视频格式 我在用着流利的 ffmpeg htt
  • 哪些标准 C++ 功能可用于查询机器/操作系统架构?

    用于查询运行程序的硬件或操作系统功能的属性的标准 C 功能和实用程序是什么 例如 std thread hardware concurrency 给出机器支持的线程数 但是 如何检测计算机有多少 RAM 或者进程正在使用多少 RAM 或者某
  • 如何从 n 个元素中找到 k 排列的索引?

    我知道 对于一个k 排列p大小的k 从构建n元素 有 P n k n n k 可能的k 排列 例如 k 2 n 4 l 1 2 3 4 P n k 4 4 2 12 1 2 2 1 3 1 4 1 1 3 2 3 3 2 4 2 1 4 2
  • .BOT 文件未部署到 Azure Bot Service v4

    将 Azure Bot 服务与 C Bot Builder SDK v4 v4 0 7 2018 年 9 月发布的 GA 版本 结合使用 我正在使用BOT file https github com Microsoft botbuilder
  • Keras:无法导入名称 np_utils [重复]

    这个问题在这里已经有答案了 我正在使用 Python 2 7 和 Jupyter Notebook 进行一些基本的机器学习 我正在按照本教程进行操作 http machinelearningmastery com regression tu
  • 在 laravel 中找不到用于 sqlite 的 pdo 异常驱动程序

    当我跑步时php artisan migrate我得到的命令 PDOException 找不到驱动程序 我将默认数据库设置为 sqlite 并检查是否有用于 sqlite 的 pdo 驱动程序php i命令 我无法理解我的问题 你的系统缺失
  • 猫鼬枚举数

    我需要获取模式中字段的枚举值 我有架构 let adminSchema new Schema login type String unique true required true minlength 5 maxlength 300 has
  • 使用套接字 fd 在手机之间传输实时视频

    我是android编程的新手 发现自己陷入了困境 我一直在研究各种从手机到手机流式传输实时视频的方法 似乎它大部分功能都可用 当然除了最重要的部分 播放流 它似乎是从一部手机发送流 但第二部手机无法播放流 这是游戏方的代码 public c
  • 为什么选择排序不稳定?

    这可能是微不足道的 但我不明白为什么默认实现选择排序 http en wikipedia org wiki Selection sort不稳定 在每次迭代中 您都会找到剩余数组中的最小元素 当找到这个最小值时 您可以选择找到的第一个最小值