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. 思路

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

相关推荐
dazzle4 小时前
Python数据结构(十二):插入排序详解
数据结构·python·排序算法
草履虫建模4 小时前
力扣算法分析 27.移除元素
java·开发语言·数据结构·后端·算法·leetcode·排序算法
LBJ辉5 小时前
第 8 章 排序
数据结构·考研·算法·排序算法
zhuanggoahead1 天前
拓扑排序(Kahn算法)
网络·数据结构·c++·算法·排序算法
二年级程序员1 天前
qsort函数的使用与模拟实现
c语言·数据结构·算法·排序算法
_OP_CHEN1 天前
【Linux系统编程】(二十四)深入 Ext2 块组内部:inode、数据块与目录的底层工作机制
linux·操作系统·文件系统·c/c++·inode·块组·数据块映射
挽天java2 天前
数据结构习题--寻找旋转排序数组中的最小值
数据结构·算法·排序算法
你怎么知道我是队长2 天前
C语言---排序算法4---希尔排序法
c语言·算法·排序算法
dvlinker2 天前
C/C++编程开发工具及实用软件推荐
ide·vscode·visual studio·qt creator·c/c++·source insight·编程工具
_OP_CHEN2 天前
【Linux系统编程】(二十三)从块到块组:Ext2 文件系统核心架构的初步认识
linux·操作系统·文件系统·c/c++·ext2文件系统·磁盘分区·块组