有一些内容来自🔗https://www.cnblogs.com/onepixel/articles/7674659.html
排序算法是非常重要的一类算法,排序算法根据不同的标准分为:
稳定性排序算法、不稳定性排序算法;稳定性指的是:a=b,排序前a在b前面,排序之后a仍在b前面,ab位置不变化。
比较类排序算法、非比较类排序算法;比较类算法:冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序;非比较类算法:桶排序(hash)、基数排序
内部排序算法、外部排序算法;内部排序算法是指数据全部在内存中,而外部排序算法数据太多可能部分在磁盘上,需要将其写入内存后再开始排序。
排序分类:
- 插入排序
- 简单插入排序、折半插入排序、希尔排序(对直接插入排序的升级)
- 选择排序
- 简单选择排序、堆排序(简单选择排序的升级,priority_queue)
- 交换排序
- 冒泡排序(优化)、快速排序(冒泡的升级)
- 归并排序
- 基数排序
1. 冒泡排序
冒泡排序的思想是:比较相邻数字的大小关系,若a<b且a在b下方则交换ab位置。第一次比较的结果是将最大数放在最低部,第二次比较的结果是将次大数放在倒数第二的位置,以此类推,直到得到升序序列。由此可知,一共需要n-1