首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么选择排序可以是稳定的或不稳定的

为什么选择排序可以是稳定的或不稳定的
EN

Stack Overflow用户
提问于 2013-12-24 04:58:09
回答 5查看 40.5K关注 0票数 28

我知道selection sort可以作为稳定的或不稳定的实现。但我想知道怎么可能。我认为排序算法只能是稳定的,或者只能是不稳定的。有人能解释一下吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-12-24 05:07:06

selection sort中,在每个“循环”结束时发生的交换可以更改具有相同值的项的相对顺序。

例如,假设您将4 2 3 4 1selection sort排序。

第一个“循环”将遍历每个元素,寻找最小元素。它会发现1是最小元素。然后,它将把1交换到第一个位置。这将导致第一个点中的4个进入最后一个点:1 2 3 4 4

现在,4的相对顺序发生了变化。原始列表中的“第一个”4已移至其他4个之后的一个位置。

记住,稳定的定义是

保持具有相同值的元素的相对顺序。

selection sort的工作方式是在一组值中找到“最小”值,然后用第一个值交换它。

代码: 2,3,1,1#扫描0到n并找到“最小”值 1,3,2,1#用元素0交换“最少”。 1,3,2,1#扫描1到n并找到“最小”值 1,1,2,3#用元素1交换“最少”。 ...and等,直到排序。

若要使此值稳定,请插入“最少”值,而不是交换值。

代码: 2,3,1,1#扫描0到n并找到“最小”值 1,2,3,1#在pos 0处插入“至少”,将其他元素推回。 1,3,2,1#扫描1到n并找到“最小”值 1,1,2,3#在pos 1处插入“至少”,将其他元素推回。 ...and等,直到排序。

修改不稳定的选择排序算法使其变得稳定应该不会太难。

票数 76
EN

Stack Overflow用户

发布于 2013-12-24 05:10:05

一般情况下-你说的不对。选择排序是unstable。这来自于它的定义。很明显,你和一个定制的案子混在一起了。

它可以是稳定的-通常,只有在linked lists。要做到这一点(经典的方式,O(1)内存)-而不是交换,最小元素必须链接到未排序的部分,使整个算法稳定。这就是“实现”的区别--显然,只有在这种情况下,由于数据结构的特殊性,才会产生稳定性。当选择排序为不稳定时,这与常见情况无关。

票数 25
EN

Stack Overflow用户

发布于 2013-12-24 05:05:55

假设我有一个数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
A = {3, 3, 1}

从位置0开始,选择排序将搜索最小值,并用最小值交换当前元素。对于A,我们用1交换第一个3,第二步什么也不做。

这是不稳定的,因为第一个3应该在第二个之前出现。如果使用链接列表而不是数组,并将元素插入正确的位置而不是交换,则选择排序是稳定的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20761396

复制
相关文章
不稳定的原地排序算法:选择排序
在之前的文章中,我们说了两个原地排序算法:插入排序和冒泡排序。分析两个算法的原理,也用代码实现了两个算法。最后,我们也从两个算法入手,引出了评价算法性能的两个重要指标:是否是原地排序算法和算法稳定性。今天我们再来说一种原地排序算法:** 选择排序**。
飞翔的竹蜻蜓
2020/07/07
2.6K0
[算法] - 为什么说快速排序是不稳定的
假设 array可以分成这样四部分p | lower | higher | unvisitedp,p指的是pivotal,lower指小于p的部分,unvisited指还未访问到,| 是分割线。 例如:
夹胡碰
2021/04/13
1.4K0
为什么你的LDO输出不稳定?
前一阵朋友和我说当初用某型号LDO时,发现输出异常,仔细阅读datasheet后,更换输出电容解决。
工程师看海
2022/06/23
1.1K0
为什么你的LDO输出不稳定?
为什么网站首页排名不稳定?
相信大家的网站有不少经历过排名不稳定,有浮动的情况,这让很多网站站长叫苦不休。那么今天我们就来聊聊为什么网站排名不稳定?
NorthS
2023/03/21
1K0
为什么网站首页排名不稳定?
为什么网站收录不稳定,总是浮动?
我们知道网站收录的页面越多,可以参与排名的页面也就越多,对于提升网站权重起到关键的作用。所以网站站长都十分在意网站的收录量,如果网站的收录量波动幅度比较大,或收录量骤降,就应该提高警惕,分析到底是哪里出了问题。
蝙蝠侠IT
2021/06/23
5770
为什么网站收录不稳定,总是浮动?
MySQL排序速度慢而且可能不稳定
有一个功能,按照算法得出的权重值,分页展示一批列表数据,权重值越大越靠前。研发同学反馈查询速度慢且排序不稳定。
普通程序员
2019/11/12
2.3K0
MySQL排序速度慢而且可能不稳定
MySQL排序速度慢而且可能不稳定
有一个功能,按照算法得出的权重值,分页展示一批列表数据,权重值越大越靠前。研发同学反馈查询速度慢且排序不稳定。
Criss@陈磊
2019/11/12
2K0
不稳定变化环境中的学习
基于惊喜的学习允许代理快速适应以突然变化为特征的非平稳随机环境。我们表明,在一个层次模型中,精确的贝叶斯推理会在忘记旧的观察值和将它们与新的观察值相结合之间产生一个令人惊讶的平衡。这种调制依赖于一个概率比,我们称之为“贝叶斯因素惊奇”,它用当前信念来检验先前信念。我们证明,在几个现有的近似算法中,贝叶斯因子惊奇调制适应新观测值的速率。我们推导了三个新的基于惊讶的算法,一个属于粒子滤波器族,一个属于变分学习族,另一个属于消息传递族,它们在观测序列长度上具有恒定的标度,并且对于指数族中的任何分布具有特别简单的更新动力学。实验结果表明,这些基于惊奇的算法比替代的近似方法更好地估计参数,并且达到与计算上更昂贵的算法相当的性能水平。贝叶斯因素惊奇与香农惊奇相关但不同。在两个假设的实验中,我们对生理指标进行了可测试的预测,将贝叶斯因素惊奇与香农惊奇分离开来。将各种方法视为基于惊喜的学习的理论见解,以及所提出的在线算法,可以应用于动物和人类行为的分析,以及非静态环境中的强化学习。
CreateAMind
2023/10/10
1920
不稳定变化环境中的学习
Python代理无法连接或连接不稳定故障排除指南
在使用Python进行网络爬虫或访问外部资源时,经常会遇到代理无法连接或连接不稳定的问题。本文将提供一份详细的故障排除指南,帮助你解决Python代理连接问题,确保顺利进行网络操作。
华科云商小彭
2023/08/25
4580
Python代理无法连接或连接不稳定故障排除指南
为什么老网站,关键词排名不稳定?
我们知道百度对老网站的排名都会给于一定的排名优势,只要网站的价值较高,网站的排名都是比较稳定的,但我们在实战中也会遇到一些不走寻常路的老网站,已经有几年甚至十几年的年龄,但网站排名与新站的波动类似,可以说是空有老网站的外衣而拥有一颗年轻网站的心。
蝙蝠侠IT
2019/12/11
6190
为什么老网站,关键词排名不稳定?
谈一谈为什么要分稳定排序和非稳定排序?
小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司。
帅地
2019/09/08
5710
windows这么多年了系统为什么还是不稳定?
windows系统由于一直在更新,中间的几个版本特别的不稳定,特别是win8简直就是灾难,以致于很多人都在怀念当年的xp系统,最主要的是windows系统已经深入人心,Windows这30年来中间大版本的迭代也是非常多,从开始dos系统到现在win10系统,也是计算机硬件迭代发展的一种体现。
程序员互动联盟
2019/07/16
1.9K0
windows这么多年了系统为什么还是不稳定?
为什么网站关键词数及SEO排名不稳定?
网站关键词是连接搜索引擎、网站以及用户的媒介,搜索引擎通过关键词判断网站页面的主题,用户通过关键词搜索进入网站获得想要的内容,而网站通过关键词布局优化获得搜索排名,带来流量转化变现,可见其重要性。
茹莱神兽
2022/03/22
2980
为什么网站关键词数及SEO排名不稳定?
VS Code SSH 不稳定的解决方法
最近在使用 VS Code 远程连接实验室服务器的时候,经常碰到断线重连的情况,平常跑代码的时候倒也还好,上传下载数据的时候几乎都会断线重连,次数多了就很烦躁,网上找到了一些方法在此分享。
EmoryHuang
2022/10/31
3.4K0
VS Code SSH 不稳定的解决方法
走心机外径不稳定分析
2、1号和2号刀车外径时外径不稳定和天平刀架的间隙有关,太紧了1号刀下降不到位会变,太松了整个刀架会前后晃动外径也会不稳定;
lrglu
2022/03/30
9730
走心机外径不稳定分析
五分钟小知识:为什么要分稳定排序和非稳定排序?
小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司。
五分钟学算法
2019/10/18
5550
五分钟小知识:为什么要分稳定排序和非稳定排序?
稳定排序
稳定排序 #include <iostream> #include <vector>//STL容器 #include <algorithm> #include <string> using namespace std; struct List//由于多种不同类型的数组,所以用结构体 { int num; string name; int score; }; bool comp(List xx, List yy)//bool类型只有两个值,0和1;成绩不相等则按照成绩从高到低排。 { retur
杨鹏伟
2022/05/05
6560
纯C++11标准写类topk算法(不稳定排序)类模板
topk排序是指从N个数据中找出最大/小的前K个数据,并以升/降序排列,本文讨论的topk与这个定义稍有差别(所以叫类topk算法):
10km
2022/05/07
4720
点击加载更多

相似问题

为什么选择排序不稳定?

10

为什么选择排序不稳定?

30

jquery-可排序不稳定子排序

11

为什么快速排序不稳定

24

拖动时不稳定的jQuery UI可排序

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文