快速排序
def quicksort(arr, l, r): i = l j = r temp = arr[l] p = l while i < j: while (arr[j] >= temp) & (i < j): j -= 1 if j > p: arr[p] = arr[j] p = j while (arr[i] <= temp) & (i < j): i += 1 if i < p: arr[p] = arr[i] p = i arr[p] = temp if p - 1 > l: quicksort(arr, l, p-1) if p + 1 < r: quicksort(arr, p+1, r) if __name__ == '__main__': arr = [34, 45, 12, 78, 6, 23, 89, 56, 8, 67] l = 0 r = len(arr) - 1 print("快排前:", arr) quicksort(arr, l, r) print("快排后:", arr)
冒泡排序
def bubblesort(arr): arr_len = len(arr) - 1 for i in range(0, arr_len): for j in range(0, arr_len): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] if __name__ == '__main__': arr = [34, 45, 12, 78, 6, 23, 89, 56, 8, 67] print("排序前:", arr) bubblesort(arr) print("排序后:", arr)
插入排序
def insertsort(arr): arr_len = len(arr) for i in range(1, arr_len): j = i-1 while j >= 0: if arr[j+1] < arr[j]: arr[j], arr[j+1] = arr[j+1], arr[j] j -= 1 if __name__ == '__main__': arr = [34, 45, 12, 78, 6, 23, 89, 56, 8, 67] print("排序前:", arr) insertsort(arr) print("排序后:", arr)
选择排序
def selectsort(arr): arr_len = len(arr) index = 0 while index < arr_len: min_value = min(arr[index:arr_len]) for i in range(index, arr_len): if arr[i] == min_value: arr[index], arr[i] = arr[i], arr[index] break index += 1 if __name__ == '__main__': arr = [34, 45, 12, 78, 6, 23, 89, 56, 8, 67] print("排序前:", arr) selectsort(arr) print("排序后:", arr)
归并排序
def mergesort(arr, l, r): if l < r: print(l, r) mid = (l + r)//2 print(mid) mergesort(arr, l, mid) mergesort(arr, mid+1, r) temp_list = [] i, j = l, mid+1 while (i<=mid) & (j<=r): if arr[i] < arr[j]: temp_list.append(arr[i]) i += 1 elif arr[i] > arr[j]: temp_list.append(arr[j]) j += 1 else: temp_list.append(arr[i]) temp_list.append(arr[j]) i += 1 j += 1 while i <= mid: temp_list.append(arr[i]) i += 1 while j <= r: temp_list.append(arr[j]) j += 1 arr[l:r+1] = temp_list if __name__ == '__main__': arr = [34, 45, 12, 78, 6, 23, 89, 56, 8, 67] print("排序前:", arr) mergesort(arr, 0, len(arr)-1) print("排序后:", arr)