python冒泡排序详解_python冒泡排序-全球微速讯

互联网   2023-05-10 12:02:46

1、冒泡排序算法的运作如下:1. 比较相邻的元素。

2、如果第一个比第二个大,就交换他们两个。


(相关资料图)

3、2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。

4、这步做完后,最后的元素会是最大的数。

5、3. 针对所有的元素重复以上的步骤,除了最后一个。

6、4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

7、所以可以看出,你代码仅仅比较了一次相邻的两个,而没有继续往后比较,输出的第三行开始出现问题。

8、至于那个None,因为你定义函数没有返回值的原因。

9、我给你三个函数,你对比一下:1234567891011121314151617181920212223242526272829303132deflist_sort_new(list_in):forjinrange(len(list_in)-1,0,-1):foriinrange(0,j):iflist_in[i]>list_in[i+1]:list_in[i],list_in[i+1]=list_in[i+1],list_in[i]returnlist_indeflist_sort_old(list_in):forjinrange(len(list_in)-1,0,-1):foriinrange(0,j):iflist_in[i]>list_in[i+1]:list_temp=list_in[i]list_in[i]=list_in[i+1]list_in[i+1]=list_tempreturnlist_indeflist_sort_test(list_in):forjinrange(len(list_in)-1,0,-1):foriinrange(0,j):iflist_in[i]>list_in[i+1]:print"before>>"+str(list_in[i])list_in[i]=list_in[i+1]print"after>>"+str(list_in[i])list_in[i+1]=list_in[i]print"and>"+str(list_in[i+1])returnlist_inlist_test=[2,1,3,44,22,53,25,26]printlist_testprint"*"*20print(list_sort_test(list_test))其中函数list_sort_new()和list_sort_old()都能实现你的目的,其中list_sort_new()中使用了指派运算, 就相当于c语言的i++。

10、 list_sort_old()类似于你的想法,其中j的for实现了全部比较,而倒序减少了不必要的比较,list_sort_test()告诉了你,为什么需要一个变量来充当缓存。

11、住好运。

本文分享完毕,希望对你有所帮助。

推荐