• python实现归并排序


     # 将递归分解列表,直至最小(即每个列表仅有一个元素)

     # 将列表分解最小之后,递归合并两个列表,即挨个比较两个列表中最前面的元素,谁较小就将谁加入新的列表,而后该列表的下标后移一位,继续比较,直至其中一个列表为空,而后将另一个列表中剩余的元素加入新列表

     # 不断合并,直至完全排序完成

     # 时间复杂度: O(nlogn)

    def merge_sort(array):
        n = len(array)
        if n < 2:
            return array
        else:
            mid = n // 2
            left = merge_sort(array[0:mid])
            right = merge_sort(array[mid:])
            left_pointer, right_pointer = 0, 0
            result = []
            while left_pointer < len(left) and right_pointer < len(right):
                print(left_pointer, right_pointer)
                if left[left_pointer] < right[right_pointer]:
                    result.append(left[left_pointer])
                    left_pointer += 1
                else:
                    result.append(right[right_pointer])
                    right_pointer += 1
            result += left[left_pointer:]
            result += right[right_pointer:]
            return result
  • 相关阅读:
    PKU 3984 迷宫问题
    九度 1341 艾薇儿的演唱会
    九度 1335
    SDUT 1198 鞍点计算
    POJ 1363 Rails
    SDUT 1570 C旅行
    HDU 1042 N!
    SDUT 1568 俄罗斯方块
    HDU 1257 最少拦截系统
    POJ 3750 小孩报数问题
  • 原文地址:https://www.cnblogs.com/jiaxiaoxin/p/10848119.html
Copyright © 2020-2023  润新知