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