1. 程式人生 > 其它 >中cmd_Dockerfile中CMD和ENTRYPOINT的區別

中cmd_Dockerfile中CMD和ENTRYPOINT的區別

技術標籤:python演算法列表

氣泡排序

def maopao(array):
    for i in range(len(array)):
        for j in range(len(array) - i - 1):
            if array[j] > array[j + 1]:
                array[j], array[j + 1] = array[j + 1], array[j]
    return array

選擇排序

def xuanze(array):
    for i, num in enumerate(array)
: min_index = i for j in range(i + 1, len(array)): if array[min_index] > array[j]: min_index = j if min_index != i: array[i], array[min_index] = array[min_index], array[i] return array

插入排序

def charu(array):
    result = []
    for
index, num in enumerate(array): for i in range(index): if result[i] > num: result.insert(i, num) break else: result.append(num) return result

希爾排序

def shell(array):
    length = len(array) // 2
    while length != 1:
        array =
charu_tap(array, length) length = length // 2 else: return charu_tap(array, length) def charu_tap(array, tap): result = [] for index, num in enumerate(array): if index // tap >= 1: strat = index % tap for i in range(strat, index, tap): if result[i] > num: result.append(num) result[i], result[index] = result[index], result[i] break else: result.append(num) else: result.append(num) return result

歸併排序

def merge_sort(lst, fx=True):
    if len(lst) <= 1:
        # 當列表元素只有一個的時候,直接返回
        return lst
    mid = len(lst) // 2
    left = lst[:mid]
    right = lst[mid:]
    starttime = time.time()
    left = merge_sort(left, not fx)
    right = merge_sort(right, not fx)

    # 遞迴的進行排序
    result = []
    while left and right:
        if (left[-1] < right[-1]) == fx:
            result.append(left.pop())
        else:
            result.append(right.pop())
    if left:
        if fx and len(left) == 1:
            result.extend(left)
        else:
            left.reverse()
            result.extend(left)
    if right:
        if fx and len(right) == 1:
            result.extend(right)
        else:
            right.reverse()
            result.extend(right)

    return result
    # 返回排序後的結果

效率測試程式碼

# 生成 10W資料
list_num = [i * random.random() for i in range(100000)]
# 打亂順序
random.shuffle(list_num)
# 測試程式碼:歸併測試
t5 = timeit.Timer("merge_sort(list_num,False)", "from __main__ import merge_sort,list_num")
# 測試次數 10次
print("test5", t5.timeit(number=10), "milliseconds")