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
------------恢复内容结束------------