leetcode-912-排序数组

------------恢复内容开始------------

 题目描述:给定一个数组,返回排序后的数组。

python 归并排序:

 

 

class Solution:
    def sortArray(self, nums: List[int]) -> List[int]:
        def merge_sort(nums):
            if len(nums) <= 1:
                return nums
            mid = len(nums)//2
            a = merge_sort(nums[:mid])
            b = merge_sort(nums[mid:])
            return merge(a,b)

        def merge(a,b):
            c = []
            while len(a) > 0 and len(b) > 0:
                if a[0] < b[0]:
                    c.append(a[0])
                    a.remove(a[0])
                else:
                    c.append(b[0])
                    b.remove(b[0])
            if len(a) == 0:
                c += b
            else:
                c += a
            return c
        
        return merge_sort(nums)

python 快排:

class Solution:
    def sortArray(self, nums: List[int]) -> List[int]:
        if len(nums) <= 1:
            return nums
        pivot = nums[0]
        left = self.sortArray([i for i in nums[1:] if i < pivot])
        right = self.sortArray([i for i in nums[1:] if i >= pivot])
        return left + [pivot] + right
class Solution:
    def sortArray(self, nums: List[int]) -> List[int]:
        l,r = 0,len(nums)-1
        if len(nums)<=1:
            return nums
        low = l
        while l < r:
            if nums[l] < nums[r]:
                nums[l], nums[low] = nums[low], nums[l]
                low += 1
            l += 1
        nums[low], nums[r] = nums[r], nums[low]
        left = self.sortArray(nums[:low])
        right = self.sortArray(nums[low+1:])
        return left + [nums[low]] +right

 

------------恢复内容结束------------

posted @ 2020-04-01 11:05  oldby  阅读(164)  评论(0编辑  收藏  举报