社区
数据结构与算法
帖子详情
怎样理解选择排序算法的不稳定?
sadly_coder
2011-08-10 10:04:37
所谓不稳定是指什么?
google了一下 ,有人举例:
序列5 8 5 2 9,第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。
我不理解的是,破坏顺序有什么关系? 如果以节约时间为目的,选择排序似乎肯定要比冒泡排序好些,是这样吧?
求解,谢谢。
...全文
1078
8
打赏
收藏
怎样理解选择排序算法的不稳定?
所谓不稳定是指什么? google了一下 ,有人举例: 序列5 8 5 2 9,第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。 我不理解的是,破坏顺序有什么关系? 如果以节约时间为目的,选择排序似乎肯定要比冒泡排序好些,是这样吧? 求解,谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ljsspace
2011-08-10
打赏
举报
回复
数据结构中存储的只是key值,并不是value。如果只是value,就不存在这个问题了。
孤独小剑
2011-08-10
打赏
举报
回复
楼主很聪明,数据结构书上也有定义的……
sadly_coder
2011-08-10
打赏
举报
回复
2
貌似我得到答案了:
简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就
说这种排序方法是稳定的。反之,就是非稳定的。
yan123wwwy
2011-08-10
打赏
举报
回复
有时候根据一个关键字排序,就有可能破坏有关联的另一关键字的顺序
justlovetao
2011-08-10
打赏
举报
回复
1
他们两个的效率要根据具体的数据有不同的结论。主要是特殊的数据是递增还是递减,不过通常情况下选择排序的效率还是比较高的!
我们现在所做的拿数据简单的做测试对破坏顺序当然没什么关系。但是如果是那结构体来排序呢?比如一个结构体里面包含一个人的学号和分数,要求在分数相等的情况下再按照学号排序,这个时候顺序就有关系了
flylee
2011-08-10
打赏
举报
回复
比如对某种数据类型,它由键和satellite数据组成
以键为基准,对拥有相同键的两个数据,如果排序可能会改变satellite数据的相对位置,则排序是不稳定的
pzcwh360
2011-08-10
打赏
举报
回复
看看数据结构就知道了。。。
sadly_coder
2011-08-10
打赏
举报
回复
[Quote=引用 5 楼 gdujian0119 的回复:]
楼主很聪明,数据结构书上也有定义的……
[/Quote]
有定义……
选择排序
是一个
稳定
排序
算法
吗?
选择排序
选择排序
是一种简单直观的排序
算法
,无论什么数据都是O(n^2)的时间复杂度。所以用到它的时候,数据规模越小越好。
算法
步骤 从数组中找出最小的那个元素,然后与最开始的元素交换位置 忽略第一步中找到的最小元素,重复执行步骤1 动图演示
算法
实现 for (int i = 0; i < array.length - 1; i++) { int minIndex = i; // 保存最小元素索引 for (int j = i; j < array.length; j++
【
算法
基础】
稳定
排序
算法
与不
稳定
排序
算法
文章目录简介
稳定
的排序
算法
1. 冒泡排序2. 插入排序3. 归并排序4. 基数排序不
稳定
的排序
算法
1.
选择排序
2. 快速排序3. 希尔排序(shell)4. 堆排序参考 简介 排序是最基础的
算法
之一,而排序
算法
是否具有
稳定
性也是我们要考虑的一点。 排序
算法
的
稳定
性定义: 两个相同数值的元素,若在排序前与排序后,前后顺序保持不变,则认为
算法
是
稳定
的;反之则认为
算法
是不
稳定
的。 即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序
算法
是
稳定
的;
排序
算法
稳定
和不
稳定
_
稳定
和不
稳定
排序
算法
之间的区别?
排序
算法
稳定
和不
稳定
最近在一次采访中,在对排序
算法
提出了一些最初的问题(例如,您如何编写QuickSort或QuickSort与MergeSort之间的区别)之后,访问者问您是否了解
稳定
和不
稳定
的排序
算法
之间的区别? 这个问题对我的读者来说是新问题,所以他说,对不起,从未听说过。 故事到此结束,采访者继续讨论下一个问题,但是像我们许多人一样,我的读者继续查找有关未回答问题的更多信息,最终他...
8种常用排序
算法
稳定
性分析
选择排序
、快速排序、希尔排序、堆排序不是
稳定
的排序
算法
冒泡排序、插入排序、归并排序和基数排序都是
稳定
的排序
算法
。 【1】为什么要区分排序
算法
的
稳定
性? 排序
算法
的
稳定
性通俗地讲就是能保证排序前两个相等的数据其在序列中的先后位置顺序与排序后它们两个先后位置顺序相同。 再简单具体一点,如果A i == A j,Ai 原来在 Aj 位置前,排序后 Ai仍然是在 Aj 位置前。 下面我们分析一下
稳定
性的......
8大排序
算法
的
稳定
和不
稳定
分析
在笔试题时,可能会遇到一个关于常见排序
算法
稳定
性判别的问题,往往还是多选。当然如果你笔试之前已经记住了数据结构书上哪些是
稳定
的,哪些不是
稳定
的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是
稳定
或者不
稳定
的人准备的。 先放结论:
选择排序
、快速排序、希尔排序、堆排序不是
稳定
的排序
算法
。 冒泡排序、插入排序、归并排序和基数排序是
稳定
的排序
算法
。 首先,排序
算法
的
稳定
性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和...
数据结构与算法
33,010
社区成员
35,328
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章