1

排序

描述
给定一个长度为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)

posted @ 2024-03-18 18:28  Bonne_chance  阅读(8)  评论(0编辑  收藏  举报
1