四大常用排序算法

冒泡排序(相当于排身高):

1.概念:通过重复比较相邻元素并交换位置,使最大元素逐步 "浮" 到数组末端。

2.特点:

(1)时间复杂度:O (n²);

(2)空间复杂度:O (1);

(3)稳定性:稳定;

(4)适用于小规模数据或几乎有序的数据。

3.字符含义:n表示数组长度,n-1表示此次排序需要排几轮,n-i-1表示每轮排序需要比较几次(一比较就交换数据)

4.代码实现:

选择排序相当于打擂台,输的人一直打,直到所有人都上过场):

1.概念:每次从待排序部分找到最小元素,与待排序部分的第一个元素交换位置。(第一轮找到最小的放在第一位,第二轮找到剩余部分最小的放在第二位......)。

2.特点:

(1)时间复杂度:O (n²);

(2)空间复杂度:O (1);

(3)稳定性:不稳定;

(4)交换次数少(n-1次),适用于数据移动成本较高的场景。(一轮比完才交换数据)

3.代码实现:

快速排序(立标杆):

1.概念:采用分治法,选择一个基准元素,将数组分为两部分,左部分小于基准,右部分大于基准,然后递归排序两部分。

2.特点:

(1)时间复杂度:平均 O (nlogn),最坏 O (n²);

(2)空间复杂度:O (logn);

(3)稳定性:不稳定;

(4)实际应用中性能优秀,适用于大规模数据。

3.代码实现:

插入排序(相当于整理扑克牌):

1.概念:将未排序的元素逐个插入到已排序序列的适当位置

2.特点:

(1)时间复杂度:O (n²)(最坏和平均情况),最好情况为 O (n)(已排序数组)

(2)空间复杂度:O (1)(只需要一个临时变量)

(3)稳定性:稳定(相等元素的相对顺序不会改变)

(4)适用场景:

a.小规模数据排序;

B.部分有序的数据(接近有序时效率很高);

c.数据增量式插入场景(如实时数据排序).

3.代码实现:

相关推荐
Yzzz-F11 分钟前
Problem - 2205D - Codeforces
算法
智者知已应修善业1 小时前
【51单片机2个按键控制流水灯运行与暂停】2023-9-6
c++·经验分享·笔记·算法·51单片机
Halo_tjn1 小时前
Java Set集合相关知识点
java·开发语言·算法
生成论实验室2 小时前
《事件关系阴阳博弈动力学:识势应势之道》第四篇:降U动力学——认知确定度的自驱演化
人工智能·科技·神经网络·算法·架构
AI科技星2 小时前
全域数学·72分册:场计算机卷【乖乖数学】
算法·机器学习·数学建模·数据挖掘·量子计算
科研前沿3 小时前
镜像孪生VS视频孪生核心技术产品核心优势
大数据·人工智能·算法·重构·空间计算
水蓝烟雨3 小时前
1931. 用三种不同颜色为网格涂色
算法·leetcode
晨曦夜月3 小时前
map与unordered_map区别
算法·哈希算法
qeen873 小时前
【数据结构】建堆的时间复杂度讨论与TOP-K问题
c语言·数据结构·c++·学习·
图码4 小时前
如何用多种方法判断字符串是否为回文?
开发语言·数据结构·c++·算法·阿里云·线性回归·数字雕刻