首页 > 编程语言 >常用算法模板

常用算法模板

时间:2024-11-02 12:42:31浏览次数:3  
标签:sort arr 常用 len 算法 quick pivot 排序 模板

快速排序

def quick_sort(arr):
    if len(arr) <= 1:  # 基本情况:如果数组为空或只有一个元素,则返回
        return arr
    else:
        pivot = arr[0]  # 选择基准值(可以选择第一个元素)
        less_than_pivot = [x for x in arr[1:] if x <= pivot]  # 小于等于基准值的元素
        greater_than_pivot = [x for x in arr[1:] if x > pivot]  # 大于基准值的元素

        # 递归排序子列表,并合并结果
        return quick_sort(less_than_pivot) + [pivot] + quick_sort(greater_than_pivot)

归并排序

def merge_sort(arr):
    # 如果数组长度小于等于1,直接返回
    if len(arr) <= 1:
        return arr
    
    # 找到数组的中间点
    mid = len(arr) // 2
    
    # 递归分割数组
    left_half = merge_sort(arr[:mid])
    right_half = merge_sort(arr[mid:])
    
    # 合并已排序的子数组
    return merge(left_half, right_half)

def merge(left, right):
    sorted_array = []
    i = j = 0
    
    # 合并两个子数组
    while i < len(left) and j < len(right):
        if left[i] < right[j]:
            sorted_array.append(left[i])
            i += 1
        else:
            sorted_array.append(right[j])
            j += 1
    
    # 追加剩余元素
    sorted_array.extend(left[i:])
    sorted_array.extend(right[j:])
    
    return sorted_array

标签:sort,arr,常用,len,算法,quick,pivot,排序,模板
From: https://www.cnblogs.com/lmc7/p/18521819

相关文章

  • 整理几个国内常用的个人创作者知识付费平台
    摘要个人创作者的作品如何实现销售?如何解决收款问题?又该如何提升曝光率?如何让个人创作的作品真正发挥其价值?无论是文件、文档、软件、源码、绘画、动漫、视频、音频、乐谱、小说、图集,创作者们都需要一个便捷的平台来促进与用户之间的交易和联系。因此,知识付费平台应运而生,成为解......
  • 【算法】【优选算法】双指针(上)
    目录一、双指针简介1.1对撞指针(左右指针)1.2快慢指针二、283.移动零三、1089.复写零3.1双指针解题3.2暴力解法四、202.快乐数4.1快慢指针4.2暴力解法五、11.盛最多⽔的容器5.1左右指针5.2暴力解法一、双指针简介常⻅的双指针有两种形式,⼀种是对撞指针,⼀......
  • 基于SpringBoot的电视剧推荐系统设计与实现(源码+定制+开发)电视剧推荐系统、个性化影
    博主介绍:  ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生......
  • 使用wxpython开发跨平台桌面应用,对常用消息对话框的封装处理
    在很多程序中,封装常用消息对话框有很多好处,尤其是在GUI应用程序中,本篇随笔结合.net开发Winform界面的经验,对使用wxpython开发中 wx.MessageDialog和 wx.lib.agw.genericmessagedialog.GenericMessageDialog两种不同消息对话框的处理,对其进行简单封装,以适应程序开发的需要。......
  • 小龙虾优化算法:原理、与遗传算法区别及应用案例
     一、小龙虾优化算法原理 (一)自然界中的小龙虾行为模拟 小龙虾优化算法(CrayfishOptimizationAlgorithm,COA)是受小龙虾在自然环境中的生存行为启发而提出的。在自然界中,小龙虾有以下几种主要行为: 1. 觅食行为:小龙虾会在其感知范围内搜索食物资源。它们朝着食物浓度......
  • 【ChatGPT】让ChatGPT根据固定模板生成报告或文档
    让ChatGPT根据固定模板生成报告或文档在撰写报告或文档时,使用固定模板可以确保内容的统一性和结构的清晰性。利用ChatGPT生成符合特定模板的报告,不仅提高了工作效率,还能确保信息的准确传达。本文将探讨如何设计固定模板并引导ChatGPT生成相应的内容。一、明确报告的目的与......
  • Spring常用过滤器(Filter)-SecurityContextHolderAwareRequestFilter
    SecurityContextHolderAwareRequestFilter:使HttpServletRequestWrapper能够感知SecurityContextHolder的过滤器。1.1功能概述:1.1.1SecurityContextHolderAwareRequestFilter通过Wrapper/Decorator模式对HttpServletRequest进行包装,使其具备访问SecurityContextHolder中安全......
  • 基于深度学习的机器人智能控制算法 笔记
    正解/逆解求正解/逆解有现成的库,参考https://github.com/petercorke/robotics-toolbox-python,代码如下:importroboticstoolboxasrtbimportnumpyasnpnp.set_printoptions(precision=6,suppress=True)robot=rtb.models.Panda()qr=np.array([0,-0.3,0,-2.2......