题解 | #排序#

排序

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

全部评论

相关推荐

牛客717484937号:双飞硕没实习挺要命的
点赞 评论 收藏
分享
评论
2
2
分享
牛客网
牛客企业服务