Loading

[Python手撕]归并排序

class Solution:
    def sortArray(self, nums: List[int]) -> List[int]:

        def merge(nums1, nums2):
            if not nums1 and not nums2:
                return None
            if not nums1:
                return nums2
            if not nums2:
                return nums1

            len1 = len(nums1)
            len2 = len(nums2)

            index1 = 0
            index2 = 0

            res = []
            while index1 <= len1 - 1 and index2 <= len2 - 1:
                if nums1[index1] <= nums2[index2]:
                    res.append(nums1[index1])
                    index1 += 1
                else:
                    res.append(nums2[index2])
                    index2 += 1

            while index1 <= len1 - 1:
                res.append(nums1[index1])
                index1 += 1
            while index2 <= len2 - 1:
                res.append(nums2[index2])
                index2 += 1

            return res

        def mergesort(nums):
            length = len(nums)
            if length == 0:
                return None
            if length == 1:
                return nums
            if length > 1:
                return merge(
                    mergesort(nums[: length // 2]), mergesort(nums[length // 2 :])
                )

        return mergesort(nums)

posted @   Duancf  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示