python| #排序#

排序

http://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896

  • 解法:
    1. 选择左侧第一个值作为基准point
    2. 从右边开始,找到第一个小于point的索引right
    3. 从右边开始,找到第一个大于point的索引left
    4. 交换两者
    5. 重复1-3,知道left=right
    6. 交换point 和right的值
    7. 此时,right左侧的值都小于right,右侧的值都大于right,然后递归即可
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
# 将给定数组排序
# @param arr int整型一维数组 待排序的数组
# @return int整型一维数组
#
class Solution:
    def MySort(self , arr ):
        # write code here
        # write code here
        return self.QuickSort(arr,0,len(arr)-1)

    def QuickSort(self,arr,left,right):
        '''
        快速排序
        '''
        if left>=right:
            return 
        point = arr[left]
        low = left
        high = right
        while(left < right):
            while left <right and point <= arr[right]:
                right -= 1
            while left < right and point >= arr[left]:
                left += 1
            self.swap(arr,left,right)
        self.swap(arr,low,right)
        self.QuickSort(arr, low, right-1)
        self.QuickSort(arr, right+1, high)
        return arr 
    def swap(self,arr,i,j):
        temp = arr[i]
        arr[i] = arr[j]
        arr[j] = temp
全部评论

相关推荐

用微笑面对困难:这里面最强的是驾驶证了,可以入职美团大厂,然后直接开启黄马褂人生
点赞 评论 收藏
分享
09-25 00:00
已编辑
电子科技大学 Java
球球与墩墩:这不是前端常考的对象扁平化吗,面试官像是前端出来的 const flattern = (obj) => { const res = {}; const dfs = (curr, path) => { if(typeof curr === 'object' && curr !== null) { const isArray = Array.isArray(curr); for(let key in curr) { const newPath = path ? isArray ? `${path}[${key}]` : `${path}.${key}` : key; dfs(curr[key], newPath); } } else { res[path] = curr } } dfs(obj); return res; }
查看3道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务