python冒泡排序最簡單寫法(python冒泡排序)

導讀您好,現在漢漢來為大家解答以上的問題。python冒泡排序最簡單寫法,python冒泡排序相信很多小伙伴還不知道,現在讓我們一起來看看吧!1、冒...

您好,現在漢漢來為大家解答以上的問題。python冒泡排序最簡單寫法,python冒泡排序相信很多小伙伴還不知道,現在讓我們一起來看看吧!

1、冒泡排序算法的運作如下:1. 比較相鄰的元素。

2、如果第一個比第二個大,就交換他們兩個。

3、2. 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對。

4、這步做完后,最后的元素會是最大的數。

5、3. 針對所有的元素重復以上的步驟,除了最后一個。

6、4. 持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。

7、所以可以看出,你代碼僅僅比較了一次相鄰的兩個,而沒有繼續往后比較,輸出的第三行開始出現問題。

8、至于那個None,因為你定義函數沒有返回值的原因。

9、我給你三個函數,你對比一下:1234567891011121314151617181920212223242526272829303132def?list_sort_new(list_in):????for?j?in?range(len(list_in)-1,?0?,-1):????for?i?in?range(0,?j):????????if?list_in[i]>list_in[i+1]:????????????list_in[i],list_in[i+1]?=?list_in[i+1],list_in[i]????return?list_in?def?list_sort_old(list_in):????for?j?in?range(len(list_in)-1,?0?,-1):????????for?i?in?range(0,?j):????????if?list_in[i]>list_in[i+1]:????????list_temp?=?list_in[i]????????list_in[i]?=?list_in[i+1]????????list_in[i+1]?=?list_temp????return?list_in?def?list_sort_test(list_in):????for?j?in?range(len(list_in)-1,?0?,-1):????for?i?in?range(0,?j):????????if?list_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])????return?list_in??list_test?=?[2,?1,?3,?44,?22,?53,?25,?26]print?list_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、住好運。

本文就為大家分享到這里,希望小伙伴們會喜歡。

免責聲明:本文由用戶上傳,如有侵權請聯系刪除!