Python演算法篇:冒泡排序
今天自習了一個演算法,冒泡排序法,其實還挺簡單的,就講下原理及代碼運行的方式,
首先我們要了解冒泡排序法是什么,這個是最基礎的演算法之一,在許多編程語言中都適用,它會把串列中的數字依次兩兩對比,將大的數字排到最后,而每次排列完數字后,最后一位的數字不會再重復計算,將接著排列剩下的數字,直至串列中的數字從小到大排列完成為止,
下面是程式代碼
numbers = [12,60,35,77,24,66]
length = len(numbers)
for j in range(length - 1,0,-1):
for i in range(j):
if numbers[i] > numbers[i + 1]:
temporary = numbers[i]
numbers[i] = numbers[i + 1]
numbers[i + 1] = temporary
print(numbers)
相對于我之前發的那兩篇,這次的代碼是少了很多,不過這個只屬于正常程式的一個模塊,用于計算的模塊,少些也正常,
首先我們創建了一個名為numbers的串列,里頭存放了6個數,這時各位就不用了看成品代碼了,一步一步來,
我們了解了他的原理,可很多人不知道代碼如何下手,首先我們創建另一個變數,存放numbers串列中的項數,接著可以開始下一步了,
for i in range(0,length-1):
if numbers[i] > numbers[i + 1]:
numbers[i] = numbers[i + 1]
numbers[i + 1] = numbers[i]
這時一個錯誤的交換數字位置的程式,不知道大家看出問題沒有?沒錯,當numbers【i + 1】要賦值時,賦的是重繪過的numbers【i】的值,這個問題該怎么解決呢?
for i in range(0,length-1):
if numbers[i] > numbers[i +1]:
temporary = numbers[i]
numbers[i] = numbers[i + 1]
numbers[i + 1] = temporary
很簡單,只要加入一個臨時變數,存放未賦值的numbers【i】的值,在給numbers【i + 1】賦值時再賦值給它,就輕松解決了,
以上運行結果:
[12,35,60,24,66,77]
可以看到,這一個輪回已經運行成功了,那如何讓它運行完整呢?下面接著講,
我們可以再建一個名為j的回圈
for j in range(length-1,0,-1):
for i in range(j):
............
這一步很多人不理解,因為用了回圈嵌套,及range函式具體大家看下網上range函式的用法基本上就了解邏輯意思了,實在不行可以去下面這個網址,這是我認為比較好的一個Python主播的視頻,大家可以看看他的視頻講解,肯定會比我用文章講解詳細,
https://www.bilibili.com/video/av328230795
不是恰飯!
往期文章:
抽獎程式制作(初始版)
制作Python數字華容道(可選擇關卡)
謝謝閱讀!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/274735.html
標籤:python
上一篇:python基礎資料型別之字串
