1.氣泡排序
氣泡排序(bubble sort) 最為簡單的一種排序,通過重複走完陣列的所有元素,通過打擂台的方式兩個兩個比較,直到沒有數可以交換的時候結束這個數,再到下個數,直到整個陣列排好順序。因乙個個浮出所以叫氣泡排序。雙重迴圈時間 o(n^2)
演算法描述:
比較相鄰兩個資料如果。第乙個比第二個大,就交換兩個數
對每乙個相鄰的數做同樣1的工作,這樣從開始一隊到結尾一隊在最後的數就是最大的數。
針對所有元素上面的操作,除了最後乙個。
重複1~3步驟,知道順序完成。
def bubble_sort(arr):
if not arr or len(arr)<=0:
return
for i in range(0, len(arr)-1):
for j in range(i+1, len(arr)):
if arr[i] > arr[j]:
temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
return arr
def bubble_sort(arr):
if not arr or len(arr)<=0:
return
for i in range(0, len(arr)):
for j in range(0, len(arr)-i-1):
if arr[j] > arr[j+1]:
temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
return arr
2.選擇排序
選擇排序(select sort) 是直觀的排序,通過確定乙個 key 最大或最小值,再從帶排序的的數中找出最大或最小的交換到對應位置。再選擇次之。雙重迴圈時間複雜度為 o(n^2)
演算法描述:
在乙個長度為 n 的無序陣列中,第一次遍歷 n-1 個數找到最小的和第乙個數交換。
第二次從下乙個數開始遍歷 n-2 個數,找到最小的數和第二個數交換。
重複以上操作直到第 n-1 次遍歷最小的數和第 n-1 個數交換,排序完成。
def select_sort(arr):
if not arr or len(arr)<=0:
return
for i in range(0, len(arr)):
minkey = arr[i]
for j in range(i+1, len(arr)):
if minkey > arr[j]:
temp = arr[j]
arr[j] = minkey
minkey = temp
arr[i] = minkey
return arr
3.快速排序
快速排序(quicksort)是排除穩定性因素後最常用的排序。給看官介紹兩種使用方法,一種值直接在我檔案 stdlib.h 標頭檔案中的 qsort 函式實現是和正常寫**一樣的。通過使用qsort(陣列名,長度,sizeof(第乙個數長度),compinc/comodec) 進行實現陣列的排序。後面的是通過遞迴呼叫的形式。
演算法描述:
從數列中挑出乙個元素作為基準。
重新排列數列,把所有的比基準小的放在基準前面,反之放在後面(一樣大可任意一邊)完成後基準處在分割槽的中間位置。
通過遞迴呼叫把小於基準元素和大雨基準元素的子串行進行排序。
def get_index(arr, low, high):
# 獲取基準資料,即最左邊的資料
base = arr[low]
while low=base:
high -= 1
# 跳出迴圈說明arr[high]元素小於base了,需要將其賦值給low
arr[low] = arr[high]
# 當隊首元素小於等於base時,向前挪動low指標
while lowlow += 1
# 當隊首元素大於base時,需要將其賦值給high
arr[high] = arr[low]
# 跳出迴圈時low和high相等,此時的low或high就是base的正確索引位置
# 由原理部分可以很清楚的知道low位置的值並不是base,所以需要將base賦值給arr[low]
arr[low] = base
return low # 返回arr的正確位置
def quick_sort(arr, low, high):
if low < high:
# 找尋基準資料的正確索引
index = get_index(arr, low, high)
# 進行迭代對index之前和之後的陣列進行相同的操作使整個陣列變成有序
quick_sort(arr, 0, index - 1)
quick_sort(arr, index + 1, high)
return arr
十大經典排序演算法 氣泡排序
一 演算法複雜度 二 演算法流程 1 遍歷每個資料,對每個資料和其後的資料進行比較,如果第乙個較大進行交換,相當於把最大值放到最後 2 每次排序會去除掉最後乙個最大的值,再將前面部分進行排序一次 三 實現 def swap arr,i,j tmp arr i arr i arr j arr j tm...
十大經典排序之氣泡排序
氣泡排序 氣泡排序 bubble sort 是一種電腦科學領域的較簡單的排序演算法。它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序 如從大到小 首字母從a到z 錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。這個演算法的名...
十大經典排序演算法 氣泡排序
氣泡排序 bubble sort 也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。usr b...