总结七大排序!

排序总览

外部排序:依赖硬盘(外部存储器)进行的排序。对于数据集合的要求特别高,只能在特定场合下使用(比如一个省的高考成绩排序)。包括桶排序,基数排序,计数排序,都是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,进行一次插入排序,数组就完全有序了。

相关推荐
谙弆悕博士4 小时前
【附C源码】从零实现C语言堆数据结构:原理、实现与应用
c语言·数据结构·算法··数据结构与算法
smj2302_7968265212 小时前
解决leetcode第3934题最短唯一子数组
数据结构·python·算法·leetcode
iiiiyu13 小时前
面向对象和集合编程题
java·开发语言·前端·数据结构·算法·编程语言
变量未定义~13 小时前
最长回文子串
数据结构·算法
代码中介商13 小时前
AVL树:自平衡二叉搜索树的奥秘
数据结构
玛卡巴卡ldf14 小时前
【LeetCode 手撕算法】(多维动态规划)不同路径、最小路径和、最长回文子串、最长公共子序列、编辑距离
java·数据结构·算法·leetcode·动态规划·力扣
被AI抢饭碗的人14 小时前
算法:数据结构
数据结构·算法
淞綰15 小时前
c语言的练习-字符串的练习-寻找最长连续字符以及出现次数
c语言·数据结构·学习·算法·c语言的练习
qq_2965532715 小时前
[特殊字符] 搜索插入位置:从O(n)到O(log n)的优雅进化
数据结构·算法·面试·分类·柔性数组
凯瑟琳.奥古斯特15 小时前
力扣3654:二维矩阵连续空位统计
数据结构·数据库·算法·职场和发展