算法第一天温故知新之选择排序和归并排序

一、选择排序

# 选择排序
def choose_sort(arr):
    if arr == [] or len(arr) < 2:
        return
    for j in range(len(arr)):
        min_index = j
        for i in range(j, len(arr)):
            if arr[i] < arr[min_index]:
                arr[min_index], arr[i] = arr[i], arr[min_index]

二、归并排序

# 归并排序
def merge_sort(arr):
    res = merge_fun1(arr)
    for i in range(0, len(arr)):
        arr[i] = res[i]
    return arr


def merge_fun1(arr):
    if len(arr) < 2:
        return arr
    mid = len(arr) // 2
    left_arr = merge_fun1(arr[:mid])
    right_arr = merge_fun1(arr[mid:])

    res = []
    left_point = 0
    right_point = 0
    while left_point < len(left_arr) and right_point < len(right_arr):
        if left_arr[left_point] <= right_arr[right_point]:
            res.append(left_arr[left_point])
            left_point += 1
        else:
            res.append(right_arr[right_point])
            right_point += 1
    res += left_arr[left_point:]
    res += right_arr[right_point:]
    return res

三、随机数组

# for test
import random
def generate_random_array(max_size=100, max_value=100):
    arr = random.choices(range(0, max_value), k=random.randint(0, max_size))
    return arr
posted @ 2020-04-06 00:49  1055  阅读(123)  评论(0)    收藏  举报