#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 将给定数组排序
# @param arr int整型一维数组 待排序的数组
# @return int整型一维数组
#
class Solution:
    def MySort(self , arr: List[int]) -> List[int]:
        # write code here
        def quicksort(nums,left,right):#选取中间元素作为基准
            if left>=right:
                return
            pivot=nums[(left+right)//2]
            i,j=left,right #双指针
            while i<j:
                while nums[i]<pivot:
                    i+=1
                while nums[j]>pivot:
                    j-=1
                if i<=j:
                    nums[i],nums[j]=  nums[j],nums[i]
                    i+=1
                    j-=1
            if left<j:#j 指向左边那个小于或等于基准的元素的前一个位置,即右边部分的“终点”
                quicksort(nums,left,j)
            if right>i:#i 指向右边那个大于或等于基准的元素的下一个位置,即左边部分的“起点”
                quicksort(nums,i,right)
        quicksort(arr, 0, len(arr) - 1)
        return arr