简单易懂的冒泡排序

2021-01-19 14:12

阅读:707

标签:变量   print   获取   执行   +=   src   font   while   地方   

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

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

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]    这边是最后第二位和最后第一位相比较

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

 

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

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

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

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

i= [10,4,7,2,1,9,6]
a = 0
while a  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],其实有很多次比较都可以省略的,这样会优化了不少,不然要是用上面的代码,还是一样每次都要比较这么多次数的。

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

 

简单易懂的冒泡排序

标签:变量   print   获取   执行   +=   src   font   while   地方   

原文地址:https://www.cnblogs.com/weiweivip666/p/12907856.html

上一篇:ActiveMQ与Spring整合

下一篇:Java集合框架


评论


亲,登录后才可以留言!