Intel-Pin的windows安裝
阿新 • • 發佈:2020-09-10
1.插入排序(insertion sort)
解釋:是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃描,找到相應位置並插入。
def insertion_sort(arr): for i in range(1,len(arr)): key = arr[i] j = i-1 while j >= 0 and key < arr[j]: arr[j+1] = arr[j] j -= 1 arr[j+1] = key arr= [] # 建一個列表 insertion_sort(arr) print("排序後的陣列:") for i in range(len(arr)) print(f"{arr[i]}")
2.快速排序(divide and conquer)
解釋:使用分治法把一個序列分為較小和較大的兩個子序列,然後遞迴地排序兩個子序列(遞迴:執行的過程中呼叫自己)
def partition(arr,low,high): i = ( low-1 ) # 最小元素索引 pivot = arr[high] for j in range(low , high):# 當前元素小於或等於 pivot if arr[j] <= pivot: i = i+1 arr[i],arr[j] = arr[j],arr[i] arr[i+1],arr[high] = arr[high],arr[i+1] return ( i+1 ) # arr[] --> 排序陣列 # low --> 起始索引 # high --> 結束索引 # 快速排序函式 def quickSort(arr,low,high):if low < high: pi = partition(arr,low,high) quickSort(arr, low, pi-1) quickSort(arr, pi+1, high) arr = [10, 7, 8, 9, 1, 5] n = len(arr) quickSort(arr,0,n-1) print ("排序後的陣列:") for i in range(n): print ("%d" %arr[i]),
3.選擇排序(selection sort)
解釋:是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
import sys A = [64, 25, 12, 22, 11] for i in range(len(A)): min_idx = i for j in range(i+1, len(A)): if A[min_idx] > A[j]: min_idx = j A[i], A[min_idx] = A[min_idx], A[i] print ("排序後的陣列:") for i in range(len(A)): print("%d" %A[i])
4.氣泡排序(bubble sort)
解釋:也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢"浮"到數列的頂端。
def bubbleSort(arr): n = len(arr) # 遍歷所有陣列元素 for i in range(n): # Last i elements are already in place for j in range(0, n-i-1): if arr[j] > arr[j+1] : arr[j], arr[j+1] = arr[j+1], arr[j] arr = [64, 34, 25, 12, 22, 11, 90] bubbleSort(arr) print ("排序後的陣列:") for i in range(len(arr)): print ("%d" %arr[i]),