最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

python算法教程(五)归并排序

XAMPP案例 admin 485浏览 0评论

python算法教程(五)归并排序

归并排序

问题:将一组乱序排列的数列,按从小到大(从大到小)的顺序重新排序.
解决问题的逻辑:
归并排序的逻辑是:
zzzzzt027

代码实现

from random import shuffle
"""归并排序"""
# 将一列无序的数按从小到大的顺序进行排列
def merge_sort(num_lsit1:list,num_list2:list):
    i = j = 0
    result = []
    while 1:
        # 如果第一个列表的元素全部加入结果,将第二个列表的元素全部加入结果,排序结束
        if i == len(num_lsit1):
            result.extend(num_list2[j:])
            return result
        # 如果第二个列表的元素全部加入结果,将第一个列表的元素全部加入结果,排序结束
        elif j == len(num_list2):
            result.extend(num_lsit1[i:])
            return result
        # 比对当前要比较的两个元素,将较小的加入结果,并将相应的索引往后移一位
        if num_lsit1[i] < num_list2[j]:
            result.append(num_lsit1[i])
            i += 1
        else:
            result.append(num_list2[j])
            j += 1
def merge(num_list):
    if len(num_list) == 1:
        return num_list
    left = merge(num_list[:len(num_list)//2])
    right = merge(num_list[len(num_list)//2:])
    return merge_sort(left, right)

num_list_demo1 = [x for x in range(100)]
shuffle(num_list_demo1)
print("排序前:", num_list_demo1)
print("排序后:", merge(num_list_demo1))

转载请注明:XAMPP中文组官网 » python算法教程(五)归并排序

您必须 登录 才能发表评论!