6.归并排序

1.介绍
归并排序,是创建在归并操作上的一种有效的排序算法。算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。归并排序思路简单,速度仅次于快速排序,为稳定排序算法,一般用于对总体无序,但是各子项相对有序的数列。

2.归并排序示意图:


归并排序

3.代码实现

def merge_sort(list):
    if len(list)<=1:
        return list
    
    middle = len(list)//2
    left = merge_sort(list[:middle])
    right = merge_sort(list[middle:])
    #这三行代码就已经实现了分
    print("--------------------------------")
    print(left,right)
    result = []
    #新建一个临时的列表用于存放结果
    i = j = 0
    while (i<len(left) and j<len(right)):
        if (left[i] < right[j]):
            result.append(left[i])
            i = i +1
        else:
            result.append(right[j])
            j = j + 1
    #谁小谁扔进去result里
    else:
        if(i==len(left)):
            for k in range(j,len(right)):
                result.append(right[k])
        else:
            for k in range(i,len(left)):
                result.append(left[k])
    #当有一边全扔进去时,另一边按顺序扔进去
    print(result)
    return result
    #为什么每有两个就会进行合并

a = [2, 6, 10, 3, 5, 8, 4,11,12,13,14,15,16,17,18,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]
print(merge_sort(a))
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容