C++知识点总结(18):排序算法汇总

排序算法

一、冒泡排序

1. 过程

数组 9 5 8 3 2
第一轮 5 9 8 3 2
5 8 9 3 2
5 8 3 9 2
5 8 3 2 9
第二轮 5 8 3 2 9
5 3 8 2 9
5 3 2 8 9
第三轮 3 5 2 8 9
3 2 5 8 9
第四轮 2 3 5 8 9

2. 规律

一共有 n − 1 n-1 n−1 轮,每轮冒 n − i n-i n−i 次。

每轮会定一个最大值,通过两两比较,一直冒到最后一个位置。

二、选择排序

1. 过程

下标 1 2 3 4 5 最小值
原始 4 3 5 2 1 /
第一次 1 3 5 2 4 1
第二次 1 2 5 3 4 2
第三次 1 2 3 5 4 3
第四次 1 2 3 4 5 4
完成 1 2 3 4 5 /

2. 规律

一共有 n − 1 n-1 n−1 轮,每轮 1 1 1 次。

每轮会定一个最小值,和应该在的地方交换位置。

三、插入排序

1. 过程

下标 1 2 3 4 5
原始 4 3 5 2 1
第一次 1 4 3 5 2
第二次 1 2 4 3 5
第三次 1 2 3 4 5
第四次 1 2 3 4 5
完成 1 2 3 4 5

2. 思路

将待排序元素依次插到已排序序列中的恰当位置,最终形成有序序列的方法。

相关推荐
miller-tsunami3 天前
排序的相关知识点
数据结构·排序算法
wuyk5554 天前
21.计数排序:不用比较的“空间换时间”排序算法
python·算法·排序算法
Zane19945 天前
比较排序跑不出O(nlogn)是数学上证明过的,计数、桶、基数排序凭什么能绕开这堵墙
算法·排序算法
虚无的纽扣5 天前
【力扣刷题】第三天:有效三角形的个数、快乐数
算法·排序算法
无忧.芙桃5 天前
数据结构之排序算法(中):冒泡排序与快速排序,从相邻交换到工程级优化
c语言·c++·排序算法
Zane19947 天前
归并排序和堆排序都能保证O(nlogn),为什么谁也没法把稳定和原地两个优点占全
算法·排序算法
YYYing.7 天前
【C++进阶系列 (七)】C++ RTTI 深度剖析:从 typeid 到 dynamic_cast 的底层之旅
开发语言·c++·c/c++·rtti
虚无的纽扣7 天前
【力扣刷题】第二天:无重复字符的最长字串、移动零问题
算法·leetcode·排序算法
多弗朗皮卡丘7 天前
数据结构9:排序算法
c语言·数据结构·排序算法
无忧.芙桃8 天前
数据结构之排序算法(上):从评价指标到插入、希尔、选择与堆排序
c语言·c++·排序算法