首页 > 编程语言 >不同的快排算法

不同的快排算法

时间:2024-10-09 20:10:54浏览次数:6  
标签:递归 不同 元素 快排 算法 数组 pivot

之前写过一篇快排

但是现在来看写的很简单, 很无聊

 

快排的思想其实大家都懂

这次详细写写不同快排之间的区别和一些优化点

 

1. 首先是pivot元素的选择

a. 当我们数组本身就是随机的时候, 选择 第一个/最后一个/中间一个 都是可以的, 但如果数组是有某种规律的, 有可能会退化成O(n^2)的算法, 有一个比较有趣的技巧是, 把这三个数中的中值作为基准, 这样就可以减少不平衡划分的概率

b. 再一个就是我们熟悉的随机选择了, 随机选择一个数作为pivot

 

2. 然后是分组的算法不同

a. 我们熟悉的算法, 使用两个索引i和j从两端向中间扫描, 交换元素

b. 还有一种写法, 用单个索引i, 小于等于pivot的元素移动到左侧, 可参考:

https://www.geeksforgeeks.org/quick-sort-algorithm/

 

3. 递归与非递归实现

这种不多介绍了, 常见快排都是递归写, 来得简单直接

需要注意的是有个很精妙的技巧, 先递归小的数组, 再递归大的数组, 可以利用尾递归降低递归深度

 

4. 混合使用其他排序

比如元素小于10个的时候, 就可以使用插入排序了, 性能更好(c++的sort也是这么做的)

如果你问为什么性能更好

hmmmmm

插入排序是个线性排序, 常数开销低, 规避了递归, 而且对于接近有序的数组效率很高(quick sort排序可以形成一种接近有序的数组?玄学.jpg)

 

 

 

 

具体说说实现时候的一些细节

主要是什么时候跳出循环的问题, 很简单, i和j交错的时候, 谁和pivot交换呢? 主要取决于写法, 如果pivot是第一个元素且是升序排序, 那肯定是拿小的那个和pivot交换

还有选择第一个元素的时候i移动用小于等于为了规避pivot被移动的问题

hmmmm 懒得写了 以后有机会补充吧

 

标签:递归,不同,元素,快排,算法,数组,pivot
From: https://www.cnblogs.com/ryougi/p/18455052

相关文章

  • 合并、删除区间算法C++代码
    #include<algorithm>#include<iostream>#include<vector>usingnamespacestd;classSolution{public:constintCOMBINE_INT=0;//1表示整数点区间,比如[1:3]和[4:5]会合并为[1:5],0则仅会合并[1:3]和[3:4]这类的区间。vector<pair<int,int>>......
  • 基于FPGA的8PSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不
    1.算法仿真效果       本系统在以前写过的8PSK调制解调系统的基础上,增加了高斯信道模块,误码率统计模块,可以验证不同SNR情况下的8PSK误码情况。 VIVADO2019.2仿真结果如下(完整代码运行后无水印): 设置SNR=30db   其对应星座图:   设置SNR=15db  ......
  • 基于禁忌搜索算法的VRP问题求解matlab仿真,带GUI界面,可设置参数
    1.程序功能描述基于禁忌搜索算法的VRP问题求解matlab仿真,带GUI界面,可设置参数。2.测试软件版本以及运行结果展示MATLAB2022a版本运行 3.核心程序whileCOUNT<=ItertionsֲL=zeros(Ant_Num,1);fori=1:Ant_NumInfor_Tabu_tmps=......
  • AI 学习方法与算法现状
    在人工智能(AI)的漫长历史中,我们见证了从早期的规则驱动系统到现代的机器学习模型的转变。AI的学习方法是其进步的核心,而算法现状则反映了当前技术的高度和未来的发展方向。Ⅰ.AI学习方法AI的工作原理基于深度神经网络,这是一种模仿人脑处理信息方式的计算模型。在设计AI系统时......
  • 无人机集群路径规划:5种优化算法(APO、GOOSE、CO、PSO、PIO)求解无人机集群路径规划,提供M
     一、单个无人机路径规划模型介绍无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径,使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一,它可以通过算法和模型来确定无人机的航迹,以避开障碍物、优化飞行时间和节省能量消耗。二、无人......
  • AI在不同领域的应用与行业影响
    本文将探讨AI在不同技术领域和行业中的广泛应用,以及这些应用如何影响和改变我们的世界。I.引言AI技术正日益渗透到各个技术领域,从计算机视觉到自然语言处理,再到音频处理,AI的应用正变得越来越广泛。这些技术的发展不仅推动了科学研究的进步,也在实际应用中展现出巨大的潜力。II......
  • 算法专题四: 前缀和
    目录1.前缀和2.二维前缀和3.寻找数组的中心下标4.除自身以外数组的乘积5.和为k的子数组6.和可被K整除的子数组7.连续数组8.矩阵区域和博客主页:酷酷学!!!感谢关注~1.前缀和算法思路:根据题意,创建一个前缀和数组,dp[i]=dp[i-1]+arr[i],再使用......
  • 视频智能分析/AI智能分析网关V4客流统计算法介绍及其在多领域多场景中的应用
    随着人工智能技术的快速发展,AI智能分析网关V4作为一种集高性能、低功耗于一体的软硬一体AI边缘计算硬件设备,在工地、工厂、园区、消防、社区、校园等领域展现出强大的应用潜力。本文将详细介绍AI智能分析网关V4的客流统计算法原理及其在多个场景中的应用。1、AI智能分析网关V4......
  • 视频智能分析/AI智能分析网关V4客流统计算法介绍及其在多领域多场景中的应用
    随着人工智能技术的快速发展,AI智能分析网关V4作为一种集高性能、低功耗于一体的软硬一体AI边缘计算硬件设备,在工地、工厂、园区、消防、社区、校园等领域展现出强大的应用潜力。本文将详细介绍AI智能分析网关V4的客流统计算法原理及其在多个场景中的应用。1、AI智能分析网关V4客......
  • 【php加密算法】加密算法举例
    原创php中文网课程PHP是一种广泛使用的服务器端脚本语言,用于开发动态网页和应用程序。在PHP中,加密算法是保护数据安全和隐私的重要组成部分。PHP提供了多种加密算法,用于加密和解密数据。本文将介绍一些常用的PHP加密算法。MD5算法:MD5(MessageDigestAlgorithm5)是一种广泛使......