跟着专注于计算机视觉的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)) O(nlog(n))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值