C语言实现Hoare版快速排序(递归版)
Hoare版
快速排序是由Hoare发明的,所以我们先来讲创始人的想法。我们直接切入主题,Hoare版快速排序的思想是将一个值设定为key,这个值不一定是第一个,如果你选其它的值作为你的key,那么你的思路也就要转换一下,好,我们刚刚说到将一个值设为key(这里我们就将第一个值设为key就好了),left在最左边,right在最右边,我们设定好key值之后,先让right往左走(目标是找小),找到比key小的值就停下,再让left往右走(目标是找大),找到比key大的值就停下,然后交换right和left的值,这样就会让大的那一个值到右边,小的那一个值到左边,交换完后再让right先走,以此类推直到相遇,相遇后的那个值再跟key进行交换,一趟就结束了,快速排序的一个特点是每一趟走完都会定下这个key值的位置,也就是说每一趟走完都将固定一个值,然后进行递归,把所有值都固定就排序完成了。
接下来说说第二趟也就是如何来递归,我们前面说过了,每一趟都会确认一个值的位置,那么,我们的步骤就是类比二叉树的后序遍历一样,以固定的值为最左值或最右值,依次固定住所有的该在的位置。
我们已经知道,每一趟都会确定key值以及位置,那么我们就将每一趟排序的过程单独封装成一个函数PartSort1.既然是递归,那么我们肯定要有结束条件吧,结束条件就是begin>=end,为什么是这个呢?我们看下面的代码,我说过了,类似后序遍历的思想,所以我们就写出了先找左,再找右的递归代码,第一个QuickSort就是往左递归嘛,那么起始位置就是begin不变,右边的界限就是我们通过函数找出来的k(key交换后的下标),但是要减一,因为key的下标k已经是确定好的了嘛,就不需要访问它了;第二个QuickSort自然就是访问右边了,访问右边最右边就不用动,最左边是k+1,理由跟上面的是一样的。
这样我们就理解了,第一个QuickSort后如果只有一个数据可以访问,那么begin是==end的,就该停止,那么第二QuickSort个可能就是没有数据,这个时候begin就会大于end,也要停止,接下来我们具体看看排序部分是怎么写的。
从上往下的思路是left等于最左值,right等于最右值,key也等于最左值的下标,当还没相遇的情况下,循环就会继续,按照思路先让右边找小,找到就停止,但是不要漏了后面的条件,因为如果没有找到,就会一直往左走,到最后right就变成负的了。同理,下面left的思路也是一样的,left和right都找到后就交换,当两个相遇之后,把key的值跟他们交换就行了。然后返回新的key下标。
相关文章:
C语言实现Hoare版快速排序(递归版)
Hoare版 快速排序是由Hoare发明的,所以我们先来讲创始人的想法。我们直接切入主题,Hoare版快速排序的思想是将一个值设定为key,这个值不一定是第一个,如果你选其它的值作为你的key,那么你的思路也就要转换一下…...
git 避免输入用户名 密码 二进制/文本 文件冲突解决
核心概念介绍 工作区是你当前正在进行编辑和修改的文件夹,可见的。 暂存区位于.git/index(git add放入)。 代码库(工作树)位于.git(git commit将暂存区中的更改作为一个提交保存到代码库中,并清空暂存区) 避免输入用户 密码: 方式一: ht…...
[OpenWrt]RAX3000一根线实现上网和看IPTV
背景: 1.我家电信宽带IPTV 2.入户光猫,桥接模式 3.光猫划分vlan,将上网信号IPTV信号,通过lan口(问客服要光猫超级管理员密码,具体教程需要自行查阅,关键是要设置iptv在客户侧的vlan id&#…...
最新50万字312道Java经典面试题52道场景题总结(附答案PDF)
最近有很多粉丝问我,有什么方法能够快速提升自己,通过阿里、腾讯、字节跳动、京东等互联网大厂的面试,我觉得短时间提升自己最快的手段就是背面试题;花了3个月的时间将市面上所有的面试题整理总结成了一份50万字的300道Java高频面…...
html.parser --- 简单的 HTML 和 XHTML 解析器
源代码: Lib/html/parser.py 这个模块定义了一个 HTMLParser 类,为 HTML(超文本标记语言)和 XHTML 文本文件解析提供基础。 class html.parser.HTMLParser(*, convert_charrefsTrue) 创建一个能解析无效标记的解析器实例。 如果…...
赵传和源代码就是设计-UMLChina建模知识竞赛第4赛季第23轮
参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先答对前3题,即可获得本轮优胜。第4题为附加题,对错不影响优胜者的判定,影响的是优胜者的得分。 所有题目的回答必须放在同一条消息中࿰…...
Leaflet.Graticule源码分析以及经纬度汉化展示
目录 前言 一、源码分析 1、类图设计 2、时序调用 3、调用说明 二、经纬度汉化 1、改造前 2、汉化 3、改造效果 总结 前言 在之前的博客基于Leaflet的Webgis经纬网格生成实践中,已经深入介绍了Leaflet.Graticule的实际使用方法和进行了简单的源码分析。认…...
html 中vue3 的setup里调用element plus的弹窗 提示
引入Elementplus之后,在setup()方法外面导入ElMessageBox const {ElMessageBox} ElementPlus 源码 : <!DOCTYPE html> <html> <head><meta charset"UTF-8"><!-- import Vue before Elemen…...
对话系统之解码策略(Top-k Top-p Temperature)
一、案例分析 在自然语言任务中,我们通常使用一个预训练的大模型(比如GPT)来根据给定的输入文本(比如一个开头或一个问题)生成输出文本(比如一个答案或一个结尾)。为了生成输出文本,…...
《面向机器学习的数据标注规程》摘录
说明:本文使用的标准是2019年的团体标准,最新的国家标准已在2023年发布。 3 术语和定义 3.2 标签 label 标识数据的特征、类别和属性等。 3.4 数据标注员 data labeler 对待标注数据进行整理、纠错、标记和批注等操作的工作人员。 【批注】按照定义…...
VGG(pytorch)
VGG:达到了传统串型结构深度的极限 学习VGG原理要了解CNN感受野的基础知识 model.py import torch.nn as nn import torch# official pretrain weights model_urls {vgg11: https://download.pytorch.org/models/vgg11-bbd30ac9.pth,vgg13: https://download.pytorch.org/mo…...
celery/schedules.py源码精读
BaseSchedule类 基础调度类,它定义了一些调度任务的基本属性和方法。以下是该类的主要部分的解释: __init__(self, nowfun: Callable | None None, app: Celery | None None):初始化方法,接受两个可选参数,nowfun表…...
单片机上位机(串口通讯C#)
一、简介 用C#编写了几个单片机上位机模板。可定制!!! 二、效果图...
初识Flask
摆上中文版官方文档网站:https://flask.github.net.cn/quickstart.html 开启实验之路~~~~~~~~~~~~~ from flask import Flaskapp Flask(__name__) # 使用修饰器告诉flask触发函数的URL,绑定URL,后面的函数用于返回用户在浏览器上看到的内容…...
JeecgBoot jmreport/queryFieldBySql RCE漏洞复现
0x01 产品简介 Jeecg Boot(或者称为 Jeecg-Boot)是一款基于代码生成器的开源企业级快速开发平台,专注于开发后台管理系统、企业信息管理系统(MIS)等应用。它提供了一系列工具和模板,帮助开发者快速构建和部署现代化的 Web 应用程序。 0x02 漏洞概述 Jeecg Boot jmrepo…...
机器学习---模型评估
1、混淆矩阵 对以上混淆矩阵的解释: P:样本数据中的正例数。 N:样本数据中的负例数。 Y:通过模型预测出来的正例数。 N:通过模型预测出来的负例数。 True Positives:真阳性,表示实际是正样本预测成正样…...
【机器学习】应用KNN实现鸢尾花种类预测
目录 前言 一、K最近邻(KNN)介绍 二、鸢尾花数据集介绍 三、鸢尾花数据集可视化 四、鸢尾花数据分析 总结 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 💡本文由Fil…...
ACL和NAT
目录 一.ACL 1.概念 2.原理 3.应用 4.种类 5.通配符 1.命令 2.区别 3.例题 4.应用原则 6.实验 1.实验目的 2.实验拓扑 3.实验步骤 7.实验拓展 1.实验目的 2.实验步骤 3.测试 二.NAT 1.基本理论 2.作用 3.分类 静态nat 动态nat NATPT NAT Sever Easy-IP…...
MX6ULL学习笔记(十二)Linux 自带的 LED 灯
前言 前面我们都是自己编写 LED 灯驱动,其实像 LED 灯这样非常基础的设备驱动,Linux 内 核已经集成了。Linux 内核的 LED 灯驱动采用 platform 框架,因此我们只需要按照要求在设备 树文件中添加相应的 LED 节点即可,本章我们就来学…...
Qt容器QToolBox工具箱
# QToolBox QToolBox是Qt框架中的一个窗口容器类,常用的几个函数有: setCurrentIndex(int index):设置当前显示的页面索引。可以通过调用该函数,将指定索引的页面设置为当前显示的页面。 addItem(QWidget * widget, const QString & text):向QToolBox中添加一个页面…...
[NLP]Huggingface模型与数据集高效下载全攻略:告别网络瓶颈
1. 为什么你需要这篇Huggingface下载指南 作为一名NLP工程师,我太理解那种盯着进度条干着急的感受了。记得上个月我在复现一个对话模型时,光是下载6B参数的模型就花了整整一上午——不是因为模型太大,而是公司网络时不时抽风,每次…...
使用AirLift ESP32与CircuitPython快速实现蓝牙低功耗通信
1. 项目概述与核心价值 如果你正在寻找一种为你的微控制器项目添加蓝牙低功耗(BLE)连接能力的方案,但又不想被复杂的射频电路设计和底层协议栈开发所困扰,那么使用Adafruit AirLift ESP32作为协处理器,配合CircuitPyth…...
资源管理器老崩溃?可能是combase.dll在捣鬼,手把手教你用DISM和干净启动搞定它
深度解析Win10资源管理器崩溃:combase.dll故障诊断与系统级修复指南 当你在Windows 10中拖拽文件时突然遭遇黑屏闪烁,随后资源管理器自动重启,这种看似随机的崩溃往往与一个关键系统组件——combase.dll密切相关。作为COM基础库的核心文件&am…...
CloudCompare点云滤波保姆级教程:从低通到CSF,7种方法一次搞定(附避坑指南)
CloudCompare点云滤波实战指南:7大核心方法与避坑策略 点云数据处理是三维重建、地形测绘和工业检测等领域的关键环节。面对海量且带有噪声的原始点云,如何高效筛选有效信息成为每个从业者的必修课。CloudCompare作为开源点云处理利器,其丰富…...
开发者的文件对比神器:Beyond Compare 4在Linux下从安装、汉化到‘延长试用’的完整指南
Beyond Compare 4在Linux环境下的高效应用指南 对于开发者而言,文件与目录的高效对比是不可或缺的日常工作。无论是代码版本管理、配置文件同步还是数据校验,一个强大的对比工具都能显著提升工作效率。Beyond Compare作为业界公认的专业对比工具…...
算法联盟·全域数学公理体系下黑洞标量毛发与LVK引力波O4全维理论、求导、证明、计算、验证、分析
算法联盟全域数学公理体系下黑洞标量毛发与LVK引力波O4全维理论、求导、证明、计算、验证、分析 算法联盟 全域数学公理体系下黑洞标量毛发与 LVK 引力波O4 全维理论、求导、证明、计算、验证、分析 所属体系:算法联盟 ROOT 全域数学网格第一性原理(AI科…...
Display-Lock:窗口状态锁定技术原理与C#实战
1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目,叫Stateford/Display-Lock。乍一看这个名字,可能有点摸不着头脑,Stateford听起来像个人名或者组织名,Display-Lock直译是“显示锁定”。但当你深入进去,会发现…...
HsMod:炉石传说终极模改插件完整指南 - 300%游戏体验提升方案
HsMod:炉石传说终极模改插件完整指南 - 300%游戏体验提升方案 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是一款基于BepInEx框架开发的炉石传说模改插件,为…...
全链路监控与可观测性:Spring AI 应用的日志、追踪与告警体系
系列导读 你现在看到的是《Spring AI 企业级集成与场景实践:从零搭建智能应用》的第 10/10 篇,当前这篇会重点解决:教会读者如何像监控数据库一样监控 AI 调用,快速定位性能瓶颈和异常。 上一篇回顾:第 9 篇《安全防线:Spring AI 应用的输入过滤、输出审核与数据隐私保…...
构建个人数字档案馆:用静态站点生成器永久保存思想印记
1. 项目概述:一个灵魂的数字化栖息地 最近在整理个人数字资产时,我常常感到一种无力感。十几年来,从博客、社交媒体到各种笔记应用,产生的文字、图片、链接散落在各处,像一座座孤岛。有些平台已经关闭,有些…...




