首页 > 其他分享 >快速排序

快速排序

时间:2024-01-06 13:44:35浏览次数:34  
标签:sort do int while quick 排序 快速

快速排序

双指针 分治

void quick_sort(int q[], int l, int r)
{
    //递归的终止情况
    if(l >= r) return;

    //第一步:分成子问题
    int i = l - 1, j = r + 1, x = q[l + r >> 1];
    while(i < j)
    {
        do i++; while(q[i] < x);
        do j--; while(q[j] > x);
        if(i < j) swap(q[i], q[j]);
    }

    //第二步:递归处理子问题
    quick_sort(q, l, j), quick_sort(q, j + 1, r);

    //第三步:子问题合并.快排这一步不需要操作,但归并排序的核心在这一步骤
}

边界情况分析参考:https://www.acwing.com/solution/content/16777/

  1. 以j为划分时,x不能选q[r] 或 若以i为划分,则x不能选q[l]
  2. do i++; while(q[i] < x)和do j--; while(q[j] > x) 中不能用q[i] <= x 和 q[j] >= x
  3. if(i < j) swap(q[i], q[j])可以使用 i <= j
  4. 最后一句不能改用quick_sort(q, l, j-1), quick_sort(q, j, r)作为划分
  5. j的取值范围为[l..r-1]
  6. while(i < j) 不能改为 while(i <= j)

标签:sort,do,int,while,quick,排序,快速
From: https://www.cnblogs.com/hxlll/p/17948831

相关文章

  • 使用Docker-ompose快速构建Nacos服务
    在微服务架构中,服务的注册与发现扮演着至关重要的角色。Nacos(NamingandConfigurationService)是阿里巴巴开源的服务注册与发现组件,致力于支持动态配置管理和服务发现。最近,一位朋友表达了对搭建一套Nacos开发环境的兴趣。先前,我们曾发布了一篇有关在Linux上直接部署Nacos的文章,标......
  • 排序算法
    冒泡排序思想:1、一个无序的数组,n个元素,一共需要排序n-1轮2、在每一轮中,从数组第0位开始,比较相邻两个元素,如果与需求逆序,就交换这两个元素,在每一轮中,可以将当前最大(最小)的元素交换到最后,3、直到执行完n-1轮,没有需要比较的元素为止。代码实现:publicstaticvoidbubSort(in......
  • 痞子衡嵌入式:在i.MXRT1170上快速点亮一款全新LCD屏的方法与步骤(MIPI DSI接口)
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是在i.MXRT1170上快速点亮一款全新LCD屏的方法与步骤。我们知道LCD屏的接口有很多:DPI-RGB、MIPIDSI、DBI/MCU(I8080)、LVDS、SPI等等,接口不同,对应的软件驱动也不同。RT1170片内外设对以上接口都能很好地......
  • 在Python中,有几个库可以帮助我们自动寻找最适合的机器学习模型和参数。这里有两个主要
    在Python中,有几个库可以帮助我们自动寻找最适合的机器学习模型和参数。这里有两个主要的库:1.**lazypredict**¹:这个库可以快速地比较多种机器学习算法的性能,从而帮助我们选择最佳的算法。它可以在循环中迭代多个模型,这通常需要一些时间,但是使用lazypredict可以克服这个限制。下......
  • 无涯教程-Redis - Sorted Sets(排序集)
    RedisSortedSets与RedisSets类似,它具有存储在集合中的值的独特功能,不同之处在于,排序集的每个元素都与一个分数相关联,该分数用于从最小到最大分数中获取排序的排序集。SortedSets-示例redis127.0.0.1:6379>ZADDLearnfk1redis(integer)1redis127.0.0.1:6379>ZA......
  • 微信小程序直播(二):如何使用第三方直播插件快速实现企业直播间
    ZEGO微信小程序直播SDK可以在微信小程序中提供实时音视频直播服务,从而实现电商直播/在线教育/在线问诊/视频客服等各种业务场景。但是由于微信小程序的官方限制,在某些场景下需要额外使用ZEGO提供的小程序直播插件才能实现实时音视频直播功能。本节将介绍需要使用与不需要使用Z......
  • 【解决方案】数维图快速构建智慧监所综合管理平台
    1前言物联网技术的发展使云计算技术得到了迅猛的发展及广泛的应用,智能体系的创建已经成为监狱发展的必然趋势。智慧监狱的创建、智能化管理的推行是监狱管理的创新,也是监狱整体工作水平提升的具体体现。1.1 建设背景近年来,司法部不断加大司法行政改革力度,持续推进“数字法治,智慧......
  • 《Shiro框架》 十分钟快速入门
    前言RBAC权限模型,全称是Role-BasedAccessControl基于角色的访问控制。简单来说,每个用户拥有若干角色,每个角色拥有若干个菜单,菜单中存在菜单权限、按钮权限。这样,就形成了 “用户<->角色<->菜单” 的授权模型。在这种模型中,用户与角色、角色与菜单之间构成了多对多的关系。......
  • 大模型训练中断,断点续传助力快速恢复
    深度学习在计算机视觉领域的地位日益显著,其中,YOLOv5(YouOnlyLookOnceversion5)模型因其高效和准确而受到广泛关注。但在实际训练过程中,由于数据集大小、计算资源或意外中断等原因,训练可能会突然中断。这时,如何恢复训练并确保之前的工作不白费,就显得尤为重要。而“断点续传”这一......
  • 【C】排序算法
    文章介绍了插入排序、希尔排序、选择排序、堆排序、冒泡排序、归并排序的实现思路与使用c编写的代码,同时对排序算法的三个评价要素:时间复杂度、空间复杂度、稳定性,分别进行了具体分析。1、插入排序实现思想:确定一个有序的数组,将后续的元素逐一插入此有序数组,确定其相对位置,直到......