快速排序法的名字由来,排序步骤是什么,最坏情况下的排序次数如何计算得来的呢?

问题描述:

快速排序法的名字由来,排序步骤是什么,最坏情况下的排序次数如何计算得来的呢?

问题解答:

快速排序法的名字来源于其排序速度快的特点。它是由英国计算机科学家 Tony Hoare 于1960年提出的,最初被称为“分区交换排序”。后来因为其速度快而得名。

快速排序的基本步骤如下:

  1. 选择一个基准元素(pivot),通常是数组中的第一个元素。
  2. 将数组分为两个子数组:小于基准元素的元素组成的子数组和大于基准元素的元素组成的子数组。这一步称为分区操作(partition)。
  3. 对这两个子数组分别递归地进行快速排序。
  4. 递归的基准情况是子数组的大小为 0 或 1,此时子数组已经是有序的。

在最坏情况下,快速排序的排序次数可以通过递归树来分析。如果每次分区操作的基准元素都是数组中的最小(或最大)元素,那么就会出现树的高度为 n 的情况,其中 n 是数组的大小。在这种情况下,递归树会退化为一个非常不平衡的树,每一层的节点数都是 1,这时候需要进行 n−1 次递归调用。因此,最坏情况下的排序次数是\frac{n(n-1)}{2}.

详细解答,可以参考B站视频,或者维基百科描述。

L指针和R指针指的的数字对调。

L指针和R指针指到同一个数字的时候,

把基准P和刚刚L指针和R指针共同指向的数字对调一下。同时把三个指针全部移到左边,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/699476.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

板块一 Servlet编程:第六节 HttpSession对象全解 来自【汤米尼克的JAVAEE全套教程专栏】

板块一 Servlet编程:第六节 HttpSession对象全解 一、什么是HttpSessionSession的本质 二、创建Seesion及常用方法三、Session域对象四、Session对象的销毁 在上一节中,我们学习了Servlet五大对象里的第三个Cookie对象,但Cookie是有大小限制和…

Linux操作体系结构与功能流程

文章目录 前言一、linux操作系统结构二、操作系统的工作方式三、操作系统内核中各级模块的相互关联四、Linux操作系统结构的独立性 前言 以内核代码 v0.11 和 v3.4.2 版本源码对 Linux 内核相关知识进行学习,由浅入深逐步掌握 Linux 内核。本文记录 Linux 操作系统…

了解您的数据库管理系统及其优化器

PostgreSQL 模式 物品具有唯一标识符、唯一图像标识符、名称和价格。 仓库具有唯一标识符、名称以及由街道、城市和国家定义的位置。 对于每个可用的物品,我们记录每个仓库中的库存数量。如果某个物品在仓库中不可用,则这对没有记录。数量总是等于或大于…

[Angular 基础] - 自定义指令,深入学习 directive

[Angular 基础] - 自定义指令,深入学习 directive 这篇笔记的前置笔记为 [Angular 基础] - 指令(directives),对 Angular 的 directives 不是很了解的可以先过一下这篇笔记 后面也会拓展一下项目,所以感兴趣的也可以补一下文后对应的项目&a…

排序和查找算法

一、排序算法 1.快速排序 不稳定,时间复杂度最理想 O(nlogn) 最差时间O(n^2) package com.test;public class fasf{/*** 快速排序* param args*/public static void main(String[]args){//不用设置大小int [] num{3,6,5,4,7,2,9};fasf fnew fasf();f.quicksort(n…

ZS Associates致盛咨询是什么公司?排名怎么样?

随着商业化时代的加速演进,咨询公司在企业发展中的“智囊团”角色愈发突显。对于医药企业来说,一个优秀的咨询团队不仅可以帮助推动整体战略转型及内部改革,还对药品研发、营销起到优化促进作用。 那什么样的咨询企业可称之为优秀的咨询企业…

6.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-通过逆向分析确定游戏明文发送数据过程

内容参考于:易道云信息技术研究院VIP课 上一个内容:测试需求与需求拆解 在开始之前要了解一个小知识,在逆向开始之前要很清楚知道要找的东西是什么,大概长什么样子,只有这样才能看到它第一眼发现它,现在我…

129 Linux 系统编程7 ,make 的编写和解析

前文中,我们有多少个.c文件,就需要build 出来多少个.o文件 假设我们的项目很大,怎么管理这些 .c文件呢? 这里就要学习一个make文件的编写了。 makefile 本质上是一个脚本语言 脚本语言实际上就是将一系列命令放在一起执行 mak…

Jetson Xavier NX 与笔记本网线连接 ,网络共享,ssh连接到vscode

Jetson Xavier NX 与笔记本网线连接 ,网络共享,ssh连接到vscode Jetson Xavier NX桌面版需要连接显示屏、鼠标和键盘,操作起来并不方便,因此常常需要ssh远程连接到本地笔记本电脑,这里介绍一种连接方式,通过…

如何不患心肌梗塞

目录 一,个人面板 二,公共版图 三,卡牌 1,食物牌 2,药物牌 3,事件牌 四,回合操作 1,起始玩家 2,一轮操作 3,个人回合 4,轮末结算 5&a…

Vision Transfomer系列第二节---Tricks测试

目录 学习式和固定式位置编码测试dropout的作用测试block深度的作用测试embeding维度大小的作用测试多头的作用测试Overlap Patch的作用 学习式和固定式位置编码测试 主要测试无位置编码\可学习位置编码和固定式位置编码的训练效果: 其中固定式位置编码采用之前博客的正余弦位…

第十一天-Excel的操作

目录 1.xlrd-Excel的读模块 安装 使用 获取工作簿 读取工作簿的内容 xlsxwriter-Excel的写模块 安装 使用 生成图表 add_series参数 图表的样式 demo:生成图表 Excel的操作在python中有多个模块,为了能够快速使用,选择了相对简单…

【Docker】初学者 Docker 基础操作指南:从拉取镜像到运行、停止、删除容器

在现代软件开发和部署中,容器化技术已经成为一种常见的方式,它能够提供一种轻量级、可移植和可扩展的应用程序打包和部署解决方案。Docker 是目前最流行的容器化平台之一,它提供了一整套工具和技术,使得容器的创建、运行和管理变得…

想设计智能手环,我需要设计哪种电路?

随着电子技术的高速发展,可穿戴设备逐渐火爆,其中之一是智能手环,作为现代可穿戴技术的热门产品之一,它集成了多种功能,如健康检测、运动跟踪、通知提醒等,为了实现这些功能,需要用上哪些电路模…

模板注入 [WesternCTF2018]shrine1

打开题目 直接查看源代码 发现注册了一个名为FLAG的config,这里可能有flag, 存在flask-jinja2模板注入, 并且存在黑名单过滤 输入shrine/{{7*7}}验证成功 通过url_for()与globals()函数,绕过黑名单 /shrine/{{url_for.__globa…

Android 输入法框架简介

每种平台都有自己的输入法框架. GNU/Linux 桌面环境有多种输入法框架, 比如 ibus, fcitx 等. 但是 Android 操作系统只有一种, 是统一提供的输入法框架. 相关链接: 《ibus 源代码阅读 (1)》 https://blog.csdn.net/secext2022/article/details/136099328https://developer.and…

2024年 最新python调用ChatGPT实战教程

2024年 最新python调用ChatGPT实战教程 文章目录 2024年 最新python调用ChatGPT实战教程一、前言二、具体分析1、简版程序2、多轮对话3、流式输出4、返回消耗的token 一、前言 这个之前经常用到,简单记录一下,注意目前chatgpt 更新了,这个是最新版的&am…

MIT-BEVFusion系列九--CUDA-BEVFusion部署4 c++解析pytorch导出的tensor数据

目录 创建流打印 engine 信息打印结果内部流程 启动计时功能加载变换矩阵并更新数据(重要)内部实现 该系列文章与qwe一同创作,喜欢的话不妨点个赞。 在create_core方法结束后,我们的视角回到了main.cpp中。继续来看接下来的流程。…

挑战杯 基于大数据的时间序列股价预测分析与可视化 - lstm

文章目录 1 前言2 时间序列的由来2.1 四种模型的名称: 3 数据预览4 理论公式4.1 协方差4.2 相关系数4.3 scikit-learn计算相关性 5 金融数据的时序分析5.1 数据概况5.2 序列变化情况计算 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 &…

【操作系统】14.I/O设备怎么分配和回收?

5.2 I/O设备怎么分配和回收? 5.2.1 I/O核心子系统 I/O调度 设备保护 假脱机技术(SPOOLing技术) ​ 输入井和输出井 ​ 输入进程和输出进程 ​ 输入缓冲区和输出缓冲区 设备分配与回收 ​ 设备分配应考虑的因素 ​ 静态分配与动态分配 ​ 设备…