题解 | #排序#
排序
https://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # 将给定数组排序 # @param arr int整型一维数组 待排序的数组 # @return int整型一维数组 # class Solution: # # 快排遇到最大递归深度问题,修改为1万 import sys sys.setrecursionlimit(10000) def MySort(self , arr: List[int]) -> List[int]: # write code here # # 冒泡排序(改进版) # for i in range(len(arr)-1): # # 每次是否交换位置 # change_flag = 0 # # 每次都会把最大的放在最后一位 # for j in range(len(arr)-i-1): # if arr[j] > arr[j+1]: # arr[j], arr[j+1] = arr[j+1], arr[j] # # tmp = arr[j] # # arr[j] = arr[j+1] # # arr[j+1] = tmp # change_flag = 1 # if not change_flag: # break # return arr # # 选择排序 # for i in range(len(arr)): # min_index = i # for j in range(min_index+1,len(arr)): # if arr[min_index] > arr[j]: # min_index = j # if min_index != i: # arr[min_index], arr[i] = arr[i], arr[min_index] # return arr # # 插入排序 # for i in range(1, len(arr)): # j = i-1 # cur_val = arr[i] # # 当前值与左边一次比对直到找到比自己小的 # while j>=0 and cur_val < arr[j]: # arr[j+1] = arr[j] # j -= 1 # # 插入位置比自己小的下标加一 # arr[j+1] = cur_val # return arr # # 快速排序 if not arr: return [] pivot = arr[0] left = self.MySort([num for num in arr[1:] if num < pivot]) right = self.MySort([num for num in arr[1:] if num >= pivot]) return left + [pivot] + right