跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题不是leetcode题归并排序

啊啊啊啊,写一下归并排序

class mergeSort:
    def merge(self, left, right):
        m = len(left)
        n = len(right)
        l = 0
        r = 0
        res = []

        while l < m or r < n:
            if l==m:
                res.append(right[r])
                r += 1
                continue
            if r==n:
                res.append(left[l])
                l += 1
                continue

            if left[l] < right[r]:
                res.append(left[l])
                l += 1
            else:
                res.append(right[r])
                r += 1

        return res

    def mergeSort(self, nums):
        n = len(nums)
        if n==1:
            return nums

        mid = n // 2
        left = self.mergeSort(nums[0:mid])
        right = self.mergeSort(nums[mid:])
        res = self.merge(left, right)
        return res

mergesort = mergeSort()
nums = [0,1,2,2,1,17,6,5,4,3,3,2,1,3,4,56]
res = mergesort.mergeSort(nums)
print(res)

有问题来吐槽。时间复杂度应该是 O ( n l o g ( n ) ) O(n log(n))

猜你喜欢

转载自blog.csdn.net/mianjiong2855/article/details/107446298