各大“排序”特性及稳定性总结

简介: 各大“排序”特性及稳定性总结

一、各个排序特性




二、各个排序的稳定性分析及例子


       稳定性如何定义:排序算法的稳定性并不是指它在对数组进行排序的时候的时间复杂度是否变化,而是对于相同数值的数据进行排序了之后它们的相对位置是否发生了变化,比如说在考试的时候,小明先交卷,小强后交卷,但是他们改出来的成绩是相同的,因为小明先交卷,改出来的成绩数据肯定放在前面,小强后交卷,改出来的成绩数据肯定放在后面,所以排完序之后要求小明的成绩依然在前面,这叫做排序算法的稳定性。如果排完序之后小明的数据跑到了后面去,那对小明来说肯定是不公平的,所以在这种情况下在进行排序的时候就需要选择稳定的排序算法了。


冒泡排序:稳定,因为冒泡排序是两两比较,再进行交换的,如果两个数据相等的时候不进行交换就能做到相同数据始终保持着原来的相对大小关系了。


选择排序:不稳定,很多人误以为这个选择排序是稳定的,包括有些书本也说选择排序是稳定的排序,他们想着选择排序就是每次找到一个最小值放到最左边,如果有多个最小值就拿靠前的那个就能做到不改变相同数据的相对位置了,我一开始也是这样子想的,但是再仔细想一下你会发现,如果最左边的值也存在重复的值,而且找到的最小值又是在这个重复的值的右边呢?那在你把找到的最小值交换到最左边的时候就会改变了另一个重复数字之间的相对位置了。所以选择排序是不稳定的。这里是一个易错点。演示看下图:



直接插入排序:稳定,因为直接插入排序是从后往前找比自己小的数,再插入到这个数的后面的,只要在找到和自己相等的数的时候,插入到这个数的后面,就能够保证相等的数的相对位置在排序前后是保持不变的。


希尔排序:不稳定,因为希尔排序是通过分组预排序实现的,当相同的数分到不同的组,在预排序的时候有可能改变它们的相对位置。如下:



堆排序:不稳定,在排序过程中,向下调整会使相同的数的相对位置发生变换。如下:(4条消息) “堆”排序_KOBE 0824 BRYANT的博客-CSDN博客



归并排序:稳定, 在归并的时候只要保证左边的先归并,右边的后归并就能保证相同数据的相对位置不发生变化,归并排序也是几个时间复杂度为O(N*logN)量级中唯一一个稳定的排序。但是需要O(N)的空间复杂度。


快速排序:不稳定,无论是快排的哪一种版本的写法(hoare法,挖坑法,前后指针法,三路划分法),都不能保证相同数据在排完序之后的相对位置不发生变化。因为当两个相等的数都比key大的时候,前一个数肯定会交换到右边更靠后的位置,后一个数肯定会交换到右边更靠前的位置,此时相对位置一定发生了变化,所以快速排序时不稳定的,如下图:



以上就是关于排序算法稳定性分析及各排序各方面特性的总结,你学会了吗?

相关文章
|
4月前
|
人工智能
你在找提升效率的解决方案还是追求效果的解决方案
企业在选择解决方案时需区分提升**效率**与改善**效果**的目标。**效率**着重于加快工作流程,如政务移动化提升了审批速度;而**效果**则聚焦于成果质量,即使过程中也包含效率改进。例如,生成式AI虽能加速内容创作,但内容营销的成功还需确保内容的准确触达。**客户在哪儿AI**通过分析目标客户的媒体偏好,实现了内容的精准投放,这是追求效果而非单纯效率的体现。两者间并无优劣之分,实践中常相互交织。
|
6月前
|
安全 数据处理 数据安全/隐私保护
产品服务技术特性
产品服务技术特性
93 7
|
6月前
|
安全 Android开发 开发者
安卓手机系统的优势和劣势分析
【2月更文挑战第8天】 安卓(Android)是目前全球最流行的移动操作系统之一,拥有强大的开源技术和丰富的应用生态系统。本文将从多个维度对安卓系统进行分析,并探讨其优势和劣势。
466 2
|
6月前
|
搜索推荐 UED
产品服务的用户体验特性
产品服务的用户体验特性
90 5
|
6月前
|
人工智能 搜索推荐 5G
产品或服务特性
产品或服务特性
137 1
|
存储 消息中间件 数据库
Milvus性能优化提速之道:揭秘优化技巧,避开十大误区,确保数据一致性无忧,轻松实现高性能
Milvus性能优化提速之道:揭秘优化技巧,避开十大误区,确保数据一致性无忧,轻松实现高性能
Milvus性能优化提速之道:揭秘优化技巧,避开十大误区,确保数据一致性无忧,轻松实现高性能
|
监控 算法 调度
转:单纯形算法在监控软件中的优势、运用与误区
在监控软件中,单纯形算法可是大有作为,尤其是在资源分配、任务调度和性能优化等领域。并且在解决线性规划问题方面可是一把好手,能够找到在约束条件下目标函数的最优解。
77 1
|
数据采集 分布式计算 运维
转:模糊算法在局域网管理软件中的优势、误区和可扩展性
模糊算法在局域网管理软件中可以发挥一定的优势,在局域网管理软件中可以有一些应用场景,主要用于处理模糊信息和不确定性问题。下面是模糊算法在局域网管理软件中的优势、误区和可扩展性的讨论。
88 3
|
数据采集 算法 索引
转:文本索引算法在企业文档管理系统中具有的稳定性、优势和应用场景
经过多年的研究和实践,一些成熟的文本索引算法如倒排索引已经被广泛应用并被证明是稳定可靠的。这些算法经过了大量的测试和优化,并且在各种场景下都能提供一致性的性能和准确的搜索结果。此外,索引数据的备份和复制等措施可以进一步提高稳定性,确保索引数据的持久性和可恢复性。
77 1
|
存储 搜索推荐 算法
转:归并排序算法在局域网管理软件中所具备的优势、复杂性与作用
在局域网管理软件中,归并排序算法能够对大规模数据进行高效、稳定的排序,支持分布式处理和扩展性,从而提升局域网管理软件的性能和效率。通过归并排序算法,可以更好地组织和管理局域网中的数据,提供更可靠、高效的网络管理服务。
81 2
下一篇
无影云桌面