排序算法——冒泡排序
相信很多学习Python的同学,学完基本语法后,就要开始接触Python的算法了,其中一个最重要的算法就是排序算法,那么何谓排序算法呢,其又有哪些排序算法呢?接下来范范老师开辟一个技术系列和大家一起学习讨论下排序算法。
排序顾名思义:将一组无序的记录序列调整为有序的记录序列;而排序算法就是通过一个算法规则将一组无序的记录序列调整为有序的记录序列。
常见的排序算法种类:
1.冒泡排序
2.选择排序
3.插入排序
4.快速排序
5.堆排序
6.归并排序
7.希尔排序
8.计数排序
9.基数排序
而我们先从最简单的冒泡排序说起。
冒泡排序定义如下:
列表每两个相邻的数,如果前面比后面大,则交换这两个数,一趟排序完成后,则无序区域减少一个数,而有序区域增加一个数。
接下来我们通过一个简单的例子来彻底掌握冒泡排序的过程(以从小到大的排序为例):
如上图所示,此时箭头指针指向列表的第0位,此时第0位的4和第1位的5比较大小,此时发现4<5,此时4和5不用交换位置
箭头从第0位移动到第1位上指向5,此时5和2进行比较,发现2<5,所以5和2交换位置
此时箭头跟随5移动到列表的第2位上,此时5和3进行比较,发现3<5,所以5和3交换位置
此时箭头跟随5移动到列表的第3位上,此时5和6进行比较,发现5<6,所以5和6不用交换位置
箭头移动到列表的第4位上并指向6,此时6和1进行比较,发现1<6,所以6和1交换位置
此时经过第一趟的比较,6就是该列表中最大的数字了,并标记为红色的区域,该区域定义为有序区域,而前面的为无序区域。
接下来的进行的第二趟一直到第五趟的过程都和第一趟是一样的,此时不再赘述了。
第二趟的结果如下所示
第三趟的结果如下所示
第四趟的结果如下所示
第五趟的结果如下所示
此时理论已经弄清,接下来我们用代码来实现冒泡排序
运行结果如下:
更多相关文章
- 2021-03-16:手写代码:单链表归并排序。
- BAT iOS算法面试题(汇总)
- 必读|spark的重分区及排序
- 算法基础7:平衡查找树概述
- 2021-03-15:手写代码:单链表选择排序。
- 3-15(二叉树的算法题)
- 2021-03-14:手写代码:单链表冒泡排序。
- 二维数组排序-搜索-增删改查-多维数组递归
- MongoDB Server对于Sort排序能够支持的最大内存限制查看