1.冒泡排序
1.1 基本概念
- 冒泡排序是一种很基本的排序算法,排序效率比较低
- 操作步骤
- 对比相邻的元素,比较大小
- 左边的值大于右边的值,交换位置
- 左边的值小于右边的值,不交换位置
1.2 冒泡排序执行步骤有
1.3 对于5个元素的值步骤次数
次数 | 第一轮回 | 第二轮回 | 第三轮回 | 第四轮回 |
---|
对比次数 | 4 | 3 | 2 | 1 |
交换次数 【按照最多交换次数计算】 | 4 | 3 | 2 | 1 |
1.4 冒泡排序大O记法表示
N个元素 | 最多步骤 |
N
2
N^2
N2 |
---|
5 | 20 | 25 |
10 | 90 | 100 |
20 | 380 | 400 |
40 | 1560 | 1600 |
80 | 6320 | 6400 |
- 发现,随着N的增长,步数大致增长为
N
2
N^2
N2
- 冒泡排序的大O记法:O(
N
2
N^2
N2)
2. 将[4,2,7,1,3]进行冒泡排序 【实战】
2.1 第一次轮回步骤
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f524c531c8e8bda1da04147b42f32259.png#pic_center)
2.2 第二次轮回步骤
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/dd946fef5f8abf9d31b76256e2995862.png#pic_center)
2.3 第三次轮回步骤
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1ffd5f879d434074e8c4193326b82cf5.png#pic_center)
2.4 第四次轮回步骤
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7f46ab41e5c05f063dd2b407d62c5639.png#pic_center)
3.代码实现
alist = [4, 2, 7, 1,3]
def sort(alist):
for i in range(len(alist) - 1):
for j in range(len(alist) - 1 - i):
if alist[j] > alist[j + 1]:
alist[j], alist[j + 1] = alist[j + 1], alist[j]
print(f"第{i+1}次轮回结果为:",alist)
sort(alist)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c5af11a38663c197d33e507ddc04d16d.png#pic_center)