隐藏页面特效

简单易懂的冒泡排序

这次介绍的是最简单的冒泡排序.......好了废话不多说先看下面

#先定义一个变量,假设我们要排列下面列表中的元素的顺序

i= [10,4,7,2,1,9,6]

#先分析一下

首先先弄懂冒泡排序,两两相比,第一位比第二位大的话,就相互换位置,.....依次类推,直到最后排完的顺序应该是[1,2,4,6,7,9,10]

先假设第一位和第二位相比较

这边可以用i[0] 跟i[1] ,根据索引获取值,这边都不用多说了哈

第一次:i[0]   跟    i[1]

第二次:i[1]  跟     i[2]

第i次:i[len(i)-2]  跟 i[len(i)-1]    这边是最后第二位和最后第一位相比较

好了,弄懂以上的逻辑,下面开始写代码吧

 

1
2
3
4
5
6
7
8
9
10
#定义一个变量j = 0
 
while j < len(i)-1: #控制循环,先弄懂整个循环结束的时候,需要比较多少次
 
    if i[j]>i[j+1]:  #如果第一位大于第二位的话,执行以下代码
 
        i[j],i[j+1] = i[j+1],i[j]  #互换位置
    j+=1  #每次循环+1
 
print(i)

  是不是很简单?你以为这就完事了?错了这只是把最大的那个数循环完了,可以打印看看,现在最大的那个10是不是已经到最后面了?

好了下面开始进一步操作,现在知道上面的代码全部执行完会把最大的那个数放到最后,那现在知道该如何操作了吧?

很简单就是再套个外循环就可以了,那外循环该循环多少次呢?可以根据列表的长度减1来操作就可以了,下面开始操作

1
2
3
4
5
6
7
8
9
10
11
12
13
i= [10,4,7,2,1,9,6]
a = 0
while a < len(i) - 1#控制外层循环
# 定义一个变量
    j = 0
    while j < len(i) - 1# 控制内层循环
 
        if i[j] > i[j + 1]:  # 如果第一位大于第二位的话,执行以下代码
 
            i[j], i[j + 1] = i[j + 1], i[j]  # 互换位置
        j += 1  # 每次循环+1
    a+=1
print(i)

  

是不是很简单? 其实内部还有很多优化的地方,上面的列表实际其实比较了36次,然而假如我换一个列表呢?

 

 

 

比如列表[1,2,3,8,7,5,4],其实有很多次比较都可以省略的,这样会优化了不少,不然要是用上面的代码,还是一样每次都要比较这么多次数的。

如何优化呢?下次再更新优化后的哈

 


__EOF__

本文作者404 Not Found
本文链接https://www.cnblogs.com/weiweivip666/p/12907856.html
关于博主:可能又在睡觉
版权声明:转载请注明出处
声援博主:如果看到我睡觉请喊我去学习
posted @   我在路上回头看  阅读(258)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示