数据结构(5)
文章目錄
- 各種算法
- 選擇排序
- 插入排序
- 希爾排序
- ***快速排序***
- 歸并排序
- 二分查找
各種算法
選擇排序
def select_sort(alist):"""選擇排序"""n = len(alist)for j in range(n-1): # j: 0 ~ n-2min_index = jfor i in range(j+1, n):if alist[min_index] > alist[i]:min_index = ialist[j], alist[min_index] = alist[min_index], alist[j]插入排序
希爾排序
快速排序
歸并排序
def merge_sort(alist):"""歸并排序"""n = len(alist)if n <= 1:return alistmid = n//2# left 采用歸并排序后形成的有序的新的列表left_li = merge_sort(alist[:mid])# right 采用歸并排序后形成的有序的新的列表right_li = merge_sort(alist[mid:])# 將兩個有序的子序列合并為一個新的整體# merge(left, right)left_pointer, right_pointer = 0, 0result = []while left_pointer < len(left_li) and right_pointer < len(right_li):if left_li[left_pointer] <= right_li[right_pointer]:result.append(left_li[left_pointer])left_pointer += 1else:result.append(right_li[right_pointer])right_pointer += 1result += left_li[left_pointer:]result += right_li[right_pointer:]return result二分查找
def binary_search(alist, item):"""二分查找,遞歸"""n = len(alist)if n > 0:mid = n//2if alist[mid] == item:return Trueelif item < alist[mid]:return binary_search(alist[:mid], item)else:return binary_search(alist[mid+1:], item)return Falsedef binary_search_2(alist, item):"""二分查找, 非遞歸"""n = len(alist)first = 0last = n-1while first <= last:mid = (first + last)//2if alist[mid] == item:return Trueelif item < alist[mid]:last = mid - 1else:first = mid + 1return False總結
- 上一篇: 数据结构(6)二叉树
- 下一篇: python快递代取系统_代取快递的变现