1. 程式人生 > 實用技巧 >GIT應對異常操作

GIT應對異常操作

氣泡排序

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