算法学习之快速排序

ESP32搭配LVGL显示图片的两种方法详解:内部存储 vs 外部文件 本文详细介绍了ESP32搭配LVGL显示图片的两种方法:内部存储与外部文件。内部存储方案适合快速响应的小图片,而外部文件方案则适用于需要灵活更新和大容量图片的场景。通过对比分析,帮助开发者根据项目需求选择最优方案,提升嵌入式系统的UI性能。 阅读详情

原理

分治算法,每次确定一个值的位置,即将一个值在数组中排好顺序,并且分成左右两部分,左边的值都比该值小,右边的值都比该值大

思路

  • 我们默认每次的基准数(即要排序的数)都为数组中的第一个数

  • 先从数组的最右边开始,向左循环找到比基准数小的数

  • 在从数组的左边开始,向右循环找到比基准数大的数

  • 将两数交换位置

  • 重复234步骤直到左右下标相遇

  • 将数组分为左右两部分进行递归

代码

public class QuickSort {
    /**
     * 快速排序: 原理是首先确定一个基准数(本程序采用left为基准数),将数组分为基准数左右两部分,左边比基准数小,右边比基准数大,之后将基准数放到相应的位置,
     *         即每次都确定一个数的位置
     *         再以基准数左右两边作为两个数组进行上述操作(递归),直到right<left为止
     * @param arr
     * @param left 左起始
     * @param right 右起始
     * @return
     */
    public  int[] quickSort(int arr[] , int left , int right){
        if (right < left) {
            return arr;
        }
        int index = arr[left];// 基准数
        int temp = 0;
        int q = left ;
        int p = right ;
        while (p != q) {
            // 先进行右边的移动的原因是,最后基准数的位置要比p小,比q大
            while (p > q && arr[p] >= index) {// 从最右边找到比基准数小的数准备交换
                p--;
            }
            while (p > q && arr[q] <= index) {// 从最左边找到比基准数大的数准备交换
                q++;
            }
            // 交换两个数,保证右边的数都比基准数大,左边的都比基准数小
            temp = arr[p];
            arr[p] = arr[q];
            arr[q] = temp;
        }
        // 基准数定位,注意这里因为是现移动的右边,所以在q==p的时候,是停在较小的数上的
        // 即left~q的数都比index小,q+1~right的数都比index大
        arr[left] = arr[p];
        arr[p] = index;
        // 进入遍历
        quickSort(arr,p+1,right);
        quickSort(arr,left,p-1);
        return arr;
    }

UE游戏引擎材质简单入门 什么是物体的材质,材质属性定义了物体的某些特性,从而决定了物体表面是如何与光线相作用的。UE中物理基础渲染(Physically Based Rendering OR PBR)几乎可以让我们模拟显示世界中的任何材质。那么如何在UE中制作出真实的PBR材质,基于我们提供的游戏引擎插件,如何将这些材质资源导出,并应用到 SuperMap iClient3D for Cesium/WebGL 平台上,提升模型的显示效果呢,下面小编将详细讲解一下。 阅读详情

相关推荐

深入解析AXI-Stream协议中的TVALID与TREADY握手时序

本文深入解析AXI-Stream协议中TVALID与TREADY的握手时序,通过实际案例和代码示例详细说明三种典型握手场景及其应用。文章还探讨了常见握手失败案例的解决方法,并介绍了TLAST、TKEEP等高级信号的使用技巧,帮助开发者优化FPGA设计中的数据传输效率。

weixin_29200485的博客 341

由快速排序引申而来--如何学习算法

大部分人都知道,其实我们一般都不需要去学什么算法。除非是,要么是学生(立志参加ACM),或者做纯粹算法研究的专业人员,再者要么是为了进一些大公司而准备面试,要么是纯兴趣使然。真正因为参加工作要用很多算法的人实在是少之又少。当然,或许做图像处理或者数据处理,数据挖掘,再或者,有关搜索引擎等等之类的东西(恕我才识浅陋,从这篇文章看各自相关算法的应用领域:当今世界最为经典的十大算法--投票进行时,亦可窥

结构之法 算法之道 4万+

FreeModbus从入门到实战:手把手教你用STM32实现工业级Modbus RTU通信

本文详细介绍了如何使用STM32和FreeModbus实现工业级Modbus RTU通信,涵盖硬件搭建、协议栈移植及优化技巧。重点解析了FreeModbus的移植过程,包括串口驱动适配、定时器配置和工业级稳定性优化,为开发者提供了一套完整的工业通信解决方案。

weixin_33737774的博客 350

阿浪的算法之路:快速排序算法学习记录

阿浪的算法之路----------快速排序 众所周知,排序算法包括冒泡、插入、归并、二分、快排,堆排等等,其中快速排序我觉得可能是面试的时候遇到频率最高的了,经常会有面试官上来就是手撕快速排序,以此来考验面试者的基本功,所以趁着今天周末下午有空,好好学习一下,记录下来以便日后学习使用 快速排序在网上的各种教程数不胜数,此次尽量以自己能看懂的思路记录下来。 快速排序有两个关键字:“快速” 和 “排序”,从名字上看来这种排序算法相对于其他的排序算法最大的特点就是快速,它的时间复杂度最好的情况下是O(n l

zhanghailang1的博客 259

Java8对接三方流式接口,并实时输出(GPT)

【代码】Java8对接三方流式接口,并实时输出(GPT)

m0_58617940的博客 1728

从零到一:基于Docker与Gewechat协议,打造高可用微信AI助手

本文提供了一份从零开始的实战指南,详细讲解如何利用Docker容器化技术与Gewechat协议,构建一个高可用、低风险的微信AI助手。通过整合Dify AI平台,您可以为微信机器人注入大语言模型的智能,实现自动问答、知识库查询等高级功能,显著提升个人或团队在微信场景下的沟通与信息处理效率。

weixin_29280657的博客 160

【算法学习】 快速排序算法

快速排序又是一种分而治之思想在排序算法上的典型应用。本质上来看,快速排序应该算是在冒泡排序基础上的递归分治法。 快速排序的名字起的是简单粗暴,因为一听到这个名字你就知道它存在的意义,就是快,实现简单,而且效率高,适合于各种输入数据,它是处理大数据最快的排序算法之一了。 快速排序令人瞩目的特点就是它是原地排序(排序过程中不申请多余的存储空间),且将长度为N的数组排序所需要的时间和NlogN成正比...

愿万事胜意 584

Win 11 Fastboot驱动的详细安装教程

Fastboot驱动的详细安装教程

水w的博客 1万+

算法学习 1.3 快速排序

1.3 快速排序

qq_45781301的博客 512

海康视觉脚本开发全流程解析

本文详细解析了海康机器视觉平台(VM)中脚本模块的开发全流程。从创建第一个脚本模块入手,深入讲解了输入参数、输出参数与内部变量的定义与区别,并提供了C#脚本编写、公用函数调用、代码结构组织以及编译调试的实用指南。旨在帮助开发者掌握海康视觉脚本开发的核心技巧,高效实现复杂的自定义视觉逻辑处理。

beer8的博客 603

点云数据生成DEM,并导出三维模型

点云数据生成DEM,并导出三维模型

qq_42540466的博客 2万+

算法学习之路ACWING 01快速排序

你越不快乐,越沉迷做个思想者。

m0_51137236的博客 152

SAP资产模块(FI-AA)与总账(FI-GL)数据不一致是财务顾问和会计人员最常遇到的棘手问题之一

SAP资产模块(FI-AA)与总账(FI-GL)数据不一致问题主要源于四大原因:1)违规手工记账(最常见),直接通过总账录入资产科目凭证而未通过资产模块;2)折旧运行问题,包括执行失败、跨年度问题或配置冲突;3)主数据与配置错误,如科目确定或折旧键设置不当;4)业务流程遗漏,如单据未生成凭证或汇率差异。解决方案包括运行对账报表、检查凭证来源、补跑折旧及核对配置。关键预防措施是坚持"资产模块发起→自动生成凭证→总账审核"的标准流程。

金牌架构师 428

【Java学习笔记】快速排序算法在ArrayList中的应用

【Java学习笔记】快速排序算法在ArrayList中的应用 我毕业于GFDK; 我爱她的理性、严谨; 初见她于大一时的阶梯教室,一见钟情,一见倾心; 那天我进入了体制,我在大巴上挥手向她告别,一晃七年,体制内跌跌撞撞,就这么过去了; 我很后悔,后悔选择了僵化的体制,也许我该和她有美好的未来呢,而非在这里死气沉沉地消磨时间啊,我成家了,面对着妻儿,我更难抉择; 在梦里,我努力实现了自己的价值,社会考验了我,市场激励着我,回家已是深夜,但是却很幸福; 梦醒了,原来她一直都在,我决定去找她。 这是个快速排序

delpaction的专栏 445

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

教你快速学习算法之快速排序

附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全: 书单导航页(点击右侧 极客侠栈 即可打开个人博客):极客侠栈 ①【Java】学习之路吐血整理技术书从入门到进阶最全50+本(珍藏版) ②【算法数据结构+acm】从入门到进阶吐血整理书单50+本(珍藏版) ③【数据库】从入门到进阶必读18本技术书籍网盘吐血整理网盘(珍藏版) ④【Web前端】...

qq_43554593的博客 236

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

算法学习-快速排序

快速排序-C++语言实现

qq_43054786的博客 672

算法学习之快速排序算法

利用工作之余加强自己算法方面的学习,作此记录以便日后查阅,同时欢迎高手拍砖指点。                                                                                            ---- sherwin     2012-08-14   快速排序算法是诸多排序算法中效率较高的,其时间复杂度为O(N*log

400

《算法导论》学习总结 — 6.第七章 快速排序

推荐先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html其实这一篇我老早就写过了,只不过最近在总结《算法导论》,而第七章就是快速排序,我当初总结的快排也是根据算法导论来的,为了方便大家阅读,我在这里把曾经写过的重新再贴一遍。 前几天写过一个堆排序的文章(http://www.wutianqi.com/?p=...

weixin_30881367的博客 99

【算法练习】30:快速排序学习笔记

快速排序的算法思想,快速排序的算法步骤,基于Python的快速排序实现

qq_39780701的博客 464

算法学习:快速排序

快速排序算法通过分治法策略实现高效排序,其核心包括选择基准值、分区操作及递归排序子序列三大步骤。为了进一步提升性能和适应不同场景,可采纳诸如三数取中法优化基准选择、小数组时切换至插入排序、尾递归优化及并行处理等策略。这些优化不仅能够减少最坏情况出现的概率,还充分利用现代计算资源,使快速排序在实践中表现得更为出色,成为处理大量数据排序任务的优选算法之一。总之,快速排序凭借其高效与灵活性,在众多排序算法中占据重要地位,广泛应用于各种数据排序需求之中。

Allen- 1277

算法学习之排序学习之快速排序

快速排序,对包含n个数的数组进行排序,最坏运行时间O(n2),期望的运行时间O(nlgn)。   快速排序基本思想,基于分治模式的,先找其中一个数为中间数,然后根据中间数将数组分为两个部分,左边比中间数小,右边比中间数大,然后对左边和右边两部分子数组分别递归调用快速排序,由于两个子数组是就地排序的,合并他们不需要操作,整个数组已经有序了。   具体看代码,下面代码给出了两种实现。 pac

逆风奔跑。。不要去考虑什么天赋异禀,一切都来自经历和渴望。 1463
上一篇: 算法学习之归并排序
下一篇: 算法学习之基数排序
管管儿
博客等级 码龄7年 1粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值