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

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

一、各个排序特性




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


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


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


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



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


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



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



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


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



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

相关文章
|
2天前
|
搜索推荐 UED
产品服务的用户体验特性
产品服务的用户体验特性
39 5
|
2天前
|
安全 数据处理 数据安全/隐私保护
产品服务技术特性
产品服务技术特性
30 7
|
6月前
|
存储 消息中间件 数据库
Milvus性能优化提速之道:揭秘优化技巧,避开十大误区,确保数据一致性无忧,轻松实现高性能
Milvus性能优化提速之道:揭秘优化技巧,避开十大误区,确保数据一致性无忧,轻松实现高性能
Milvus性能优化提速之道:揭秘优化技巧,避开十大误区,确保数据一致性无忧,轻松实现高性能
|
9月前
|
算法 搜索推荐 C语言
【八大排序(十)】八大排序效率与稳定性分析
【八大排序(十)】八大排序效率与稳定性分析
|
9月前
|
监控 算法 调度
转:单纯形算法在监控软件中的优势、运用与误区
在监控软件中,单纯形算法可是大有作为,尤其是在资源分配、任务调度和性能优化等领域。并且在解决线性规划问题方面可是一把好手,能够找到在约束条件下目标函数的最优解。
57 1
|
9月前
|
存储 监控 搜索推荐
转:冒泡排序算法在局域网监控软件中的优势、复杂性与应用场景
冒泡排序是一种相当简单的排序算法,它会一遍又一遍地比较相邻的元素,并且不断地交换它们,让较大的元素逐渐“冒泡”到数组的末尾。虽然说,相比起其他高级排序算法(比如快速排序或归并排序),冒泡排序在性能上是稍逊一筹的。但其实,它还是有一些特定的应用场景,特别是在局域网监控软件中也会显示出一些优势。
56 0
|
10月前
|
机器学习/深度学习 存储 监控
转:排列组合算法在监控软件中的优势、复杂性与应用场景
排列组合算法在监控软件中可能用于处理一些组合与排列问题,例如处理多个元素的组合方式或排列顺序。它在一些特定场景下具有一定的优势和适用性,但也要注意其复杂性。
71 0
|
10月前
|
数据采集 算法 索引
转:文本索引算法在企业文档管理系统中具有的稳定性、优势和应用场景
经过多年的研究和实践,一些成熟的文本索引算法如倒排索引已经被广泛应用并被证明是稳定可靠的。这些算法经过了大量的测试和优化,并且在各种场景下都能提供一致性的性能和准确的搜索结果。此外,索引数据的备份和复制等措施可以进一步提高稳定性,确保索引数据的持久性和可恢复性。
60 1
|
10月前
|
存储 搜索推荐 算法
转:归并排序算法在局域网管理软件中所具备的优势、复杂性与作用
在局域网管理软件中,归并排序算法能够对大规模数据进行高效、稳定的排序,支持分布式处理和扩展性,从而提升局域网管理软件的性能和效率。通过归并排序算法,可以更好地组织和管理局域网中的数据,提供更可靠、高效的网络管理服务。
63 2
一对一直播平台开发,提升系统并发能力的入手点
一对一直播平台开发,提升系统并发能力的入手点