归并排序
def merge(a_list, b_list):
a_len = len(a_list)
b_len = len(b_list)
a_index = b_index = 0
tmp_list = list()
while a_index < a_len and b_index < b_len:
a_num = a_list[a_index]
b_num = b_list[b_index]
if a_num <= b_num:
tmp_list.append(a_num)
a_index += 1
else:
tmp_list.append(b_num)
b_index += 1
while a_index < a_len:
tmp_list.append(a_list[a_index])
a_index += 1
while b_index < b_len:
tmp_list.append(b_list[b_index])
b_index += 1
return tmp_list
def merge_sort(test_list):
if len(test_list) <= 1:
return test_list
middle_index = len(test_list) / 2
left_list = merge_sort(test_list[0: middle_index])
right_list = merge_sort(test_list[middle_index: len(test_list)])
sorted_list = merge(left_list, right_list)
return sorted_list
if __name__ == '__main__':
test_list = [3, 2, 5, 1, 7]
res_list = merge_sort(test_list)
print res_list