排序
描述
给定一个长度为n的数组,请你编写一个函数,返回该数组按升序排序后的结果。
实例1:
输入:[5,2,3,1,4]
返回值:[1,2,3,4,5]
实例2:
输入:[5,1,6,2,5]
返回值:[1,2,5,5,6]
排序的方法多种多样,可以利用库函数,也可以用其他方法
代码1:使用库函数
class Solution:
    def MySort(self , arr: List[int]) -> List[int]:
        # write code here
        arr.sort()
        return arr
        # 或者
        arr1 = sorted(arr)
        return arr1
代码2:自行设计函数
class Solution:
    def MySort(self, arr):
        # write code here
        if len(arr) == 0:
            return arr
        base = arr[0]
        left = self.MySort([l for l in arr[1:] if l < base])
        right = self.MySort([r for r in arr[1:] if r >= base])
        return left + [base] + right
arrList = [5,2,3,1,4]
sortRes = Solution()
res = sortRes.MySort(arrList)
print(res)
代码3:快排
class Solution:
    def MySort(self , arr: List[int]) -> List[int]:
        def quick_sort(arr, left, right):
            if left >= right:
                return arr
            low = left
            high = right
            pivot = arr[left]
            while left < right:
                while left < right and arr[right] > pivot:
                    right -= 1
                arr[left] = arr[right]
                while left < right and arr[left] < pivot:
                    left += 1
                arr[right] = arr[left]
            arr[right] = pivot
            quick_sort(arr, low, left - 1)
            quick_sort(arr, left + 1, high)
            return arr
        
        # write code here
        #arr.sort()
        return quick_sort(arr, 0, len(arr) - 1)
快排的平均时间复杂度为
O(nlogn;平均空间复杂度为O(logn)
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号