总结七大排序!

排序总览

外部排序:依赖硬盘(外部存储器)进行的排序。对于数据集合的要求特别高,只能在特定场合下使用(比如一个省的高考成绩排序)。包括桶排序,基数排序,计数排序,都是o(n)

1.什么是稳定性?

待排序的元素中,有两个相同的数据,如果排序后,它们的相对位置,与排序前一致,就称为稳定

例子:taobao商城,有两个用户下单的金额都是8元,

1 2023/8/5 15:00 8rmb

2 2023/8/5 15:06 8rmb

要求先按照时间排序,然后按照金额排序,那么排序后,顺序仍然是1 2 ,1先下单就先发货。

1.选择排序 不稳定

每次从无序区间中,选择一个最小(或者最大值),放在有序区间的最前(或者最后位置),此位置的元素已经有序,直到所有的数据都排序结束。

双向选择排序:

2.插入排序 稳定

插入排序和选择排序最大的不同?

插入排序当前遍历的元素 > 前驱元素,此时可以提前结束内存循环。

极端情况下,当集合是一个完全有序的集合,插入排序的内存循环,一次都不走,插入排序变成o(n).

插入排序经常用作告诫排序算法的优化手段之一。

3.折半插入排序

4.希尔排序

先选定一个整数gap,一般选取一个数组长度的一半,将待排序的数组先按照gap分组,不同组之间内部用插入排序,排序之后,在将gap/=2,不断缩小gap,重复上述流程,直到gap=1。

当gap=1,整个数组已经近乎有序。在整个数组上进行一次插入排序,就排序完成了。

此时数组已经近乎有序,gap=1,进行一次插入排序,数组就完全有序了。

相关推荐
All for pursuit.44 分钟前
【矩阵-2】240.搜索二维矩阵 II
数据结构·c++·算法·leetcode
Logic10110 小时前
C语言/数据结构位运算题解:异或XOR找出蛋糕订单中的“VIP独特口味“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
Logic10111 小时前
C语言/数据结构位运算题解:异或XOR找出飞行棋中的“独特颜色棋子“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
爱吃苹果的日记本12 小时前
数据结构第三课(时间复杂度)
数据结构·学习
Logic10113 小时前
C语言/数据动态规划题解:翻转一次子数组后的最大子数组和——四状态DP(O(n)时间O(1)空间)
c语言·数据结构·动态规划·时间复杂度·算法题·状态机dp·最大子数组和
小π军14 小时前
最大重叠区间数量
数据结构·算法
Logic10115 小时前
C语言/数据结构字符串题解:找出DNA序列中未配对的独特序列——排序+遍历(O(nlogn))
c语言·数据结构·字符串·数组·排序·时间复杂度·算法题
wzdark16 小时前
基于链表的内存池设计与内存复用机制4
java·数据结构·链表
BizzZ_18 小时前
算法(1)——双指针
数据结构
Doubbbbbbble云18 小时前
内存碎片化对数据结构操作性能的影响研究4
数据结构