优化快速排序的几个方法

【决战西二旗】|快速排序的优化 1.前言 前面的一篇文章https://www.cnblogs.com/backnullptr/p/11934841.html讲了快速排序的基本概念、核心思想、基础版本代码实现等,让我们对快速排序有了一个充分的认识,但还无法达到面试中对快速排序灵活应对的程度。 快速排序是图领奖得主发明的算法,被誉为20世纪最重要的十大算法之一,快速排序为了可以在多种数据集都有出色的表现,进行了非常多的优化,因... 阅读详情
普通的快排方法对于随机数组来说是挺快的,但是当遇到已经排好序的数组,复杂度马上就降为O(n^2)了。


所以我们需要对其进行优化。首先产生这种情况的原因是什么?是基数,当一个已经排好序的数组,我们所选的基数要么最大,要么最小,这就使得在排序过程中耗费了大量时间,那么如何筛选基数?

方法一:随机数产生区间内的某个数。


方法二:在划分算法上进行优化。


我们将同时从两端进行遍历,将需要的值进行交换即可。

方法三:短区间进行选择排序。


考虑到选择算法的最优时间是O(n),也就是对于已经近似排序好的数组,耗费的时间接近于遍历一次的时间。

方法四:考虑到随机数耗费的时间比较多,所以更好的做法就是我们人工筛选基数。
将要排序的区间进行分段。
当区间长度小于 7 时,我们采用选择排序;
当区间长度小于 40 时,我们将区间分成两段,得到左端点、右端点和中点,我们对这三个点取中数作为基数;
当区间大于等于 40 时,我们将区间分成 8 段,得到左三点、中三点和右三点,分别再得到左三点中的中数、中三点中的中数和右三点中的中数,再将得到的三个中数取中数,然后将该值作为基数。
具体代码只是在上一份的代码中加个筛选中数函数即可。
【数据结构】-快速排序的四种方法实现以及优化 关于快排的四种写法,以及优化版本 阅读详情

相关推荐

快速排序及优化方案

文章目录快速排序及其优化方案1. 快速排序的流程2. 快速排序的实现时间复杂度计算3. 快速排序优化随机获取基准值进行优化3.2二路快速排序原理:思想:4. 总结 快速排序及其优化方案 1. 快速排序的流程 首先设定一个分界值,通过该分界值将数组分成左右两部分。 将大于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边,而等于分分界值的部分放在相对中间的部分。此时,左边部分中各元素都小于分界值,而右边部分中各元素都大于分界值,相对中间的部分的的数据等于分界值。 然后,左边和右边的数据可以独立排序

weixin_43899008的博客 6998

快速排序的4种优化

快排思想 快排基准的选择 固定基准 随机基准 三数取中 快速排序的优化 优化1:序列长度达到一定大小时,使用插入排序 优化2:尾递归优化 优化3:聚集元素 优化4:多线程处理快排 快排思想 快排算法是基于分治策略的排序算法,其基本思想是,对于输入的数组a[low, high],按以下三个步骤进行排序。 (1)分解:以a[...

Tyler_Zx的博客 5万+

8种对快速排序等算法的优化_快速排序优化

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

2401_84619467的博客 1073

快速排序的四种优化方式

快速排序的四种优化方式 本文只讲述概念。 选用基准值(不在四种优化方式中) 选用基准值有三种方式,选用的基准值较好,快速排序的性能也会较好。 固定基准(也就是从begin的位置,作为排序的基准,没有一点优化,简单的快排方式都是这样) 随机基准(和固定基准差不多) 三数取中,这个基准就稍微优化了一些,从一堆数据中随机找出三个数据,把中间数据作为基准值,可以说是进行了稍微的优化。 下面讲一下四种优...

董皓宇 2219

快速排序深度优化详解

更多详情见原文:快速排序优化详解 正如它的名字所体现,快速排序是在实践中最快的已知排序算法,平均运行时间为O(NlogN),最坏的运行时间为O(N^2)。算法的基本思想很简单,然而想要写出一个高效的快速排序算法并不是那么简单。基准的选择,元素的分割等都至关重要,如果你不清楚如何优化快速排序算法,本文你不该错过。 算法思想 快速排序利用了分治的策略。而分治的基本基本思想是:将原问题划分为若干与原问...

守望的博客-编程珠玑 2万+

快速排序的优化方法之一(三数取中法)

快速排序的优化方法(三数取中法)

weixin_73044854的博客 1765

快速排序的5种优化方法

三种快速排序以及快速排序的优化 1、快速排序的基本思想:    快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,递归地以达到整个序列有序的目的。 2、快速排序的三个步骤: (1)选择基准:在待排序列中,按照某种方式挑出一个元素,作为 "基准"(pivot) (2)分割操作:以该基准在序列中...

qq_19525389的博客 3万+

快速排序的三个优化思路

前言 本文主要是介绍关于快速排序的三种优化思路,所以是基于读者已经掌握快速排序算法思想以及最基本的实现的前提,遂有关于快速排序原理方面,这里就不多赘述了。 下面是快速排序最简单的实现版本,即每次选取待排序序列中最左侧的元素作为枢纽元。 package SortPractice; import java.util.Random; public class QuickSortTest { /...

To be a great coder 2115

三种快速排序以及快速排序的优化

1、快速排序的基本思想:    快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。 2、快速排序的三个步骤: (1)选择基准:在待排序列中,按照某种方式挑出一个元素,作为 "基准"(pivot) (2)分割操作:以该基准在序列中的实际位置,把序列分成两个子序列。此时,在

思考,思考,再思考~ 5万+

快速排序优化

这是利用快速排序写出的代码,里面有各种优化。比较了其他的排序算法,还利用了堆栈。最后,用比较精确的计时代码来分析各个排序算法所用的时间。

用Unity Wheel Collider做坦克转向?3步实现履带式载具物理效果

本文详细解析了如何利用Unity的Wheel Collider组件实现履带式载具的差速转向物理效果。通过思维转换、场景搭建和核心代码实现三步,将Wheel Collider从模拟轮式车辆转向改造为控制履带扭矩差的系统,并深入探讨了参数调试与真实感提升的方法,帮助开发者打造物理反馈扎实的坦克或特种车辆模拟。

weixin_29009971的博客 225

快速排序及优化方法

先设置好大框架,while(x<y),这里选择序列最左边的元素为基准值,所以先从序列的右边和这个基准值进行比较(我们将这个序列按从小到大的顺序输出), 如果右边arr[y]比基准值小,我们就将y--,然后继续与基准值比较,直到找到小于它的元素,然后跳出循环,进入if判断语句,向这里if后面的语句分为两步理解,先赋值,后++,arr[x]=arr[y],x++;具体类似无监督插入排序,简单的理解就是优化判断条件,减少判断条件次数 ,优化分区代码执行过程中的判断条件,减少判断次数,进而减少算法的运行时间。

lsy1118的博客 648

无人机蜂群联合指挥作战技术详解

随着人工智能、通信技术、新材料等领域的不断进步,无人机蜂群联合指挥作战技术将迎来更加广阔的发展前景。未来,无人机蜂群将更加智能化、自主化,能够执行更加复杂、精细的作战任务。同时,加强国际合作,共同制定国际规则和标准,将是推动无人机蜂群技术健康发展的重要方向。无人机蜂群技术,是指通过先进的通信技术、自主导航与决策算法,将大量小型、低成本、功能各异的无人机组织成一个高度协同的群体,执行复杂多样的军事任务。2. 通信与数据链:采用高速、低延迟、抗干扰的通信技术,保障群体内无人机间的信息交换。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1546

快速排序的原理及其多种方法的实现和优化

本篇详细介绍了快速排序,让使用者对快速排序有进一步认识,而不是仅仅停留在表面,更好的模拟,为了更好的使用. 文章可能出现错误,如有请在评论区指正,让我们一起交流,共同进步!任取待排序元素序列中 的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右 子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。// 假设按照升序对array数组中[left, right)区间中的元素进行排序return;

Makise的博客 2667

在WPS/Office中免费使用AI,快速提升办公效率!​

《免费解锁WPS/Office AI办公神器教程》摘要: 本教程详解如何通过第三方插件OfficeAI免费实现WPS/Office智能办公,突破官方付费限制。从安全设置到安装配置,手把手教学,涵盖文档生成、PPT美化、Excel图表等核心功能。关键优势包括零成本、全场景支持及云端/本地双模式切换,并附常见问题解决方案。注意需使用WPS 2024+版本,安装时需临时关闭杀毒软件。教程强调工具来源合法性,建议商用购买正版授权。(149字)

杜哥无敌的博客 2307

Grok-1.5+Ollama企业级本地化部署与合规实践指南

本文详细介绍了Grok-1.5+Ollama企业级本地化部署与合规实践指南,重点分析了本地化部署的成本优势和数据主权保障。通过RTX 4090显卡的硬件选型、Ubuntu 22.04系统优化及部署流程中的关键陷阱规避,为企业提供了高效、安全的AI模型部署方案。特别适合金融、医疗等敏感行业。

weixin_29094539的博客 184

快速排序及快速排序的优化(完整版)

快速排序的的基本思想:      设数组a中存放了n个数据元素,low为数组的低端下标,high为数组的高端下标,从数组a中任取一个 元素(通常选取a[ow])作为标准,调整数组a中各个元素的位置,使排在标准元素前面的元素的关键字均小于标准元素的关键字,排在标准元素后面元素的关键字均大于或等于标准元素的关键字。一次结束后,把标准元素放在适合的位置,并且把以标准元素为中心划分了两个子数组,前面数组的...

lingling_nice的博客 1万+

renderdoc的使用

renderdoc可以用来捕获帧渲染情况,排查一些GPU渲染、资源规格等问题。 下面讲述一些该软件连接真机调试使用。 一、下载安装renderdoc 软件的下载地址:https://renderdoc.org/可直接点击下载即可。该软件是开源免费的,不用破解。 下载后直接安装即可使用。 二、打开使用renderdoc 打开界面后,默认的界面布局如下图所示,(这里我已经设置了黑色主题,可以忽略这点),renderdo中主要的窗口有Texture Viewer(纹理查看器)、Event B.

x_xingduo_2315的博客 2万+

快速排序3种实现方法及优化(详细图解)

快排(Quick sort)三种的方法及优化:左右指针法,挖矿法,左右指针法;优化:三位取中 以及利用数据结构栈的非递归版,详细图解

好作息,好心态,多锻炼,多学点,多钻研 4274

1. 在 SAP ABAP 事物码 SEGW 里创建 SAP OData 项目

本文介绍如何在 SAP ABAP 事物码 SEGW 里创建 SEGW 项目,使用工具生成 Runtime 运行时需要的资源。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 5446

AutoSAR系列讲解(实践篇)12.1-Diagnostics简介

主要概括性的讲解了诊断协议UDS和AutoSAR的诊断架构

雪云飞星的博客 1万+

快速排序基准选择及优化

快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 6.1 算法描述 快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下: 从数列中挑出一个元素,称为 “基准”(pivot); 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准...

lxk2017的博客 7088

MATLAB点云处理总目录

点云处理研究学习

weixin_44329757的博客 2558

C语言实现快速排序及快速排序的优化和分析

C语言实现快速排序及快速排序的优化,超详细讲解看完包会

weixin_62244902的博客 1907

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

快速排序详解及优化方式

快速排序的时间复杂度是O(n log n),其中n为待排序数组的长度。快速排序的每次划分操作需要O(n)的时间复杂度,而递归调用的次数为O(log n),因此总的时间复杂度为O(n log n)。在最坏的情况下,即数组已经有序的情况下,快速排序的时间复杂度为O(n^2)。

HYY的博客 2753

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: Windows Service 与 WebService 开发
下一篇: 还是排序算法
ColorWaterer
博客等级 码龄12年 16粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值