在陣列arr[n]中,從第乙個數開始,拿arr[i]和後面的數arr[i+1]進行比較,如果arr[i]比後面的大,就交換兩個數的位置,這樣遍歷一遍陣列後,把最大的資料排在了最後面,之後繼續迴圈排剩下的n-1個數,直到完成所有的排序,由於每次都是把最大的排到最後面,就好像冒泡一樣,故取名氣泡排序,具體執行邏輯如下:
取第乙個數和後面第二個數到第n個數比較大小,如果位置錯誤交換位置,一輪結束後最大的值在第n個位置
取第乙個數和後面第二個到第n-1個數比較大小,如果位置錯誤交換位置,一輪結束後第二大的值在第n-1個位置
取第乙個數和後面第二個到第n-i個數比較大小,如果位置錯誤交換位置,一輪結束後第i大的值在第n-i個位置
重複上訴步驟直至排序結束
defbubblesort(arr):
for i in
range(len(arr)):
for j in range(len(arr)-i-1):
if arr[j]>arr[j+1]:
arr[j],arr[j+1] = arr[j+1],arr[j]
return arr
使用兩層for迴圈,外層控制比較的輪數,內層進行具體比較,len(arr)-i-1每一輪比較減少乙個數即第一輪比較n個數,第二輪比較n-1個數,第n個數不參與比較,因為第一輪排序已經將最大的數放置在第n個位置
氣泡排序是一種相對較容易理解的排序演算法,最壞的情況下時間複雜度為o(n2)
20191209 八大排序之選擇排序
選擇排序的演算法核心思想是從陣列中選擇最小的元素,放到第乙個位置,再從陣列中選擇第二小的元素放到第二個位置,一直到陣列的最後乙個元素為止。具體邏輯如下 選擇陣列的第一小的元素,將其放在第乙個位置 選擇陣列的第二小的元素,將其放在第二個位置 選擇陣列的第三小的元素,將其放在第n個位置 def sele...
20191209 八大排序之基數排序
基數排序 radix sort 是一種只適用於數字或字母型別的排序方法,它檢查數字或字母的每一位,將之分類,按照位數的特定順序,來將元素排列。以數字為例,將所有元素按照個位數字分類,分類好後,將個位數字大小排列組合起來,再按照十位數字分類,再按照數字大小排列組合起來,一直到最大數字為止。基數排序的方...
八大排序之氣泡排序
氣泡排序,穩定,平均與最壞時間複雜度為o n 2 最好為o n 空間複雜度為o 1 include using namespace std void bubblesort int numbers,const int length int main int length 0 cin length fo...