GIT應對異常操作
阿新 • • 發佈:2020-09-09
氣泡排序
def sort(alist):
lenth = len(alist)
for j in range(lenth - 1):
for i in range(lenth - 1):
if alist[i]> alist[i + 1]: # 兩兩比較大小,誰大往後走
alist[i], alist[i + 1] = alist[i + 1], alist[i]
return alist
二分查詢
def findValue(alist, item): left = 0 # 序列中第一個元素下標 right = len(alist) - 1 # 最後一個元素下標 find = False while left <= right: mid = (left + right) // 2 # 中間元素下標 if item < alist[mid]: # 查詢的值小於中間元素,查詢的值存在於中間元素左側 right = mid - 1 elif item > alist[mid]: # 大於中間元素 在中間元素右側 left = mid + 1 else: find = True break return find
選擇排序
def sort1(alist): for j in range(len(alist)): max_indedx = 0 for i in range(1, len(alist) - j): if alist[max_indedx] < alist[i]: max_indedx = i alist[max_indedx], alist[len(alist) - j - 1] = alist[len(alist) - j - 1], alist[max_indedx] return alist
插入排序
def sort_hash(alist:list): gap = len(alist) // 2 while gap >= 1: for i in range(gap,len(alist)): while i > 0: if alist[i] < alist[i-gap]: alist[i],alist[i-gap] = alist[i-gap],alist[i] i -= gap else: break gap //= 2 return alist
希爾排序
def sort(alist):
gap = len(alist) // 2
while gap >= 1:
for i in range(gap, len(alist)):
while i > 0:
if alist[i] < alist[i - gap]:
alist[i], alist[i - gap] = alist[i - gap], alist[i]
i = i - gap
else:
break
gap = gap // 2
return alist
快速排序
# 完整code
def sort(alist,start,end):
low = start
high = end
# 結束遞迴的條件
if low > high:
return
mid = alist[low] # 基數
while low < high:
while low < high:
# 向左偏移high
if alist[high] > mid:
high -= 1
else:
alist[low] = alist[high]
break
while low < high:
if alist[low] < mid:
low += 1
else:
alist[high] = alist[low]
break
if low == high:
alist[low] = mid
# 將sort遞迴作用在基數左側子序列
sort(alist,start,high-1)
# 將sort遞迴作用在基數右側子序列
sort(alist,high + 1,end)
return alist