博客
关于我
【python刷题】分治法
阅读量:474 次
发布时间:2019-03-06

本文共 1725 字,大约阅读时间需要 5 分钟。

归并排序是一种高效的排序算法,适用于大数据量的排序场景。其核心思想是将数组分成两部分,分别进行排序后再合并。以下是归并排序的实现代码以及对应的解释:

def merge(le, ri):    res = []    i = j = 0    while i < len(le) and j < len(ri):        if le[i] < ri[j]:            res.append(le[i])            i += 1        else:            res.append(ri[j])            j += 1    res += le[i:]    res += ri[j:]    return resdef mergeSort(nums):    if len(nums) <= 1:        return nums    mid = len(nums) // 2    left = mergeSort(nums[:mid])    right = mergeSort(nums[mid:])    return merge(left, right)nums = [6,2,1,5,4,3,2,2,7]res = mergeSort(nums)print(res)

代码解释:

  • merge函数:用于合并两个已经排序的数组,返回一个新的排序数组。
  • mergeSort函数:实现归并排序的主要函数,通过递归将数组分成两部分,分别排序后再合并。
  • 归并排序的时间复杂度为O(n log n),在实际应用中常用于大数据量的排序需求。


    LeetCode 241:为运算表达式设计优先级

    在这个问题中,我们需要设计一个运算表达式的优先级系统,支持加、减、乘运算。每个运算符的优先级决定了执行顺序。我们可以通过递归的方式来处理表达式,将其拆分为左边和右边部分,分别计算结果后再合并。

    递归思路:

  • 遍历字符串中的每个字符。
  • 当遇到运算符时,递归处理左边和右边的子表达式。
  • 根据运算符类型,分别计算左边和右边的结果,并将结果按照运算符优先级合并。
  • 代码解释:

    class Solution:    def diffWaysToCompute(self, input: str) -> List[int]:        res = []        n = len(input)        for i in range(n):            c = input[i]            if c in '+-*':                left = self.diffWaysToCompute(input[:i])                right = self.diffWaysToCompute(input[i+1:])                for a in left:                    for b in right:                        if c == '+':                            res.append(a + b)                        elif c == '-':                            res.append(a - b)                        elif c == '*':                            res.append(a * b)            else:                res.append(int(input))        return res

    代码功能:

  • 遍历输入字符串中的每个字符。
  • 当遇到运算符时,递归处理左边和右边的表达式。
  • 根据运算符类型,分别计算左边和右边的结果,并将结果合并。
  • 最后返回所有可能的计算结果。
  • 这个方案通过递归的方式处理表达式,确保了运算符的优先级,实现了表达式的正确计算。

    转载地址:http://wfpbz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现perfect cube完全立方数算法(附完整源码)
    查看>>
    Objective-C实现perfect number完全数算法(附完整源码)
    查看>>
    Objective-C实现perfect square完全平方数算法(附完整源码)
    查看>>
    Objective-C实现permutate Without Repetitions无重复排列算法(附完整源码)
    查看>>
    Objective-C实现PNG图片格式转换BMP图片格式(附完整源码)
    查看>>
    Objective-C实现pollard rho大数分解算法(附完整源码)
    查看>>
    Objective-C实现Polynomials多项式算法 (附完整源码)
    查看>>
    Objective-C实现power iteration幂迭代算法(附完整源码)
    查看>>
    Objective-C实现powLinear函数和powFaster函数算法 (附完整源码)
    查看>>
    Objective-C实现PrimeFactors质因子分解算法 (附完整源码)
    查看>>
    Objective-C实现pythagoras哥拉斯算法(附完整源码)
    查看>>
    Objective-C实现qubit measure量子位测量算法(附完整源码)
    查看>>
    Objective-C实现quick select快速选择算法(附完整源码)
    查看>>
    Objective-C实现radians弧度制算法(附完整源码)
    查看>>
    Objective-C实现radianToDegree弧度到度算法(附完整源码)
    查看>>
    Objective-C实现radix sort基数排序算法(附完整源码)
    查看>>
    Objective-C实现rail fence围栏密码算法(附完整源码)
    查看>>
    Objective-C实现rayleigh quotient瑞利商算法(附完整源码)
    查看>>
    Objective-C实现RC4加解密算法(附完整源码)
    查看>>
    Objective-C实现recursive bubble sor递归冒泡排序算法(附完整源码)
    查看>>