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

# 选择排序
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

浙公网安备 33010602011771号