当前位置: 首页 > news >正文

究极短的快排代码【QuickSort】

快排 QuickSort

两边向中间扫描法:取一个基点值,从左往右扫描,基点值左边所有元素小于它,遇到大于基点值的则停下,开始从右往左扫描,右边所有元素大于他,遇到小于基点值则停下,如果这时左右指针不交叉(左指针在基点左边,右指针在基点右边),则交换两个指针当前值,在每一次交换后两个指针均向右向左移动。依次递归则完成排序。

取中间值为基点,如果递归调用时将j换成i,那么x取值时需要向上取整,否则会造成边界问题

建议读者用不同的数组根据代码逻辑模拟 方便理解

void QuickSort(int a[] , int l , int r){if ( l >= r ) return ;int i = l - 1, j = r + 1, x = a[l + r >> 1] ; //注意x的取值与下面的函数递归调用的参数有关while( i < j ){while( a[++i] < x );while( a[--j] > x );if( i < j ) swap(a[i] , a[j]);}QuickSort(a , l , j);QuickSort(a , j + 1 , r);
}

void QuickSort(int a[] , int l , int r){if ( l >= r ) return ;int i = l - 1, j = r + 1, x = a[l + r + 1 >> 1] ; //注意x的取值与下面的函数递归调用的参数有关while( i < j ){while( a[++i] < x );while( a[--j] > x );if( i < j ) swap(a[i] , a[j]);}QuickSort(a , l , i - 1);QuickSort(a , i , r);
}

相关文章:

究极短的快排代码【QuickSort】

快排 QuickSort 两边向中间扫描法&#xff1a;取一个基点值&#xff0c;从左往右扫描&#xff0c;基点值左边所有元素小于它&#xff0c;遇到大于基点值的则停下&#xff0c;开始从右往左扫描&#xff0c;右边所有元素大于他&#xff0c;遇到小于基点值则停下&#xff0c;如果…...

MUYUCMS v2.1:一款开源、轻量级的内容管理系统

MuYuCMS&#xff1a;一款基于Thinkphp开发的轻量级开源内容管理系统&#xff0c;为企业、个人站长提供快速建站解决方案。它具有以下的环境要求&#xff1a; 支持系统&#xff1a;Windows/Linux/Mac WEB服务器&#xff1a;Apache/Nginx/ISS PHP版本&#xff1a;php > 5.6 (…...

⑩【Redis Java客户端】:Jedis、SpringDataRedis、StringRedisTemplate

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ Jedis、SpringDataRedis、StringRedisTemplate…...

什么是自动化测试po模式,po分层如何实现?

一、什么是PO模式 全称&#xff1a;page object model 简称&#xff1a;POM/PO PO模式最核心的思想是分层&#xff0c;实现松耦合&#xff01;实现脚本重复使用&#xff0c;实现脚本易维护性&#xff01; 主要分三层&#xff1a; 1.基础层BasePage&#xff1a;封装一些最基…...

Redis-缓存高可用集群

Redis集群方案比较 哨兵模式 性能和高可用性等各方面表现一般&#xff0c;特别是在主从切换的瞬间存在访问瞬断的情况。另外哨兵模式只有一个主节点对外提供服务&#xff0c;没法支持很高的并发&#xff0c;且单个主节点内存也不宜设置得过大&#xff0c;否则会导致持久化文件过…...

Docker的入门

Docker的入门 防火墙Docker的命令镜像相关的命令运行容器容器相关的命令 Docker作为一个软件集装箱化平台&#xff0c;可以让开发者构建应用程序时&#xff0c;将它与其依赖环境一起打包到一个容器中&#xff0c;然后很容易地发布和应用到任意平台中。 docker有3大核心&#xf…...

AJAX技术-04-- 跨域说明

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1 同源策略同源策略介绍规定要求 请求协议://域名:端口号 关于同源策略练习关于同源策略总结 2.JSONPJSONP原理说明关于JSONP优化 3.CORS介绍介绍不允许跨域说明跨域…...

蓝桥杯每日一题2023.11.23

题目描述 题目分析 本题使用递归模拟即可&#xff0c;将每一个大格子都可以拆分看成几个小格子&#xff0c;先将最开始的数字进行填入&#xff0c;使每一个对应小格子的值都为大格子对应的数&#xff0c;搜索找到符合要求的即可 &#xff08;答案&#xff1a;50 33 30 41&am…...

20231124给RK3399的挖掘机开发板在Andorid10下加鼠标右键返回

20231124给RK3399的挖掘机开发板在Andorid10下加鼠标右键返回 2023/11/24 12:19 百度&#xff1a;RK3399 Android10 右键返回 https://blog.csdn.net/danhu/article/details/122467256 android9/android10 鼠标右键返回(已验证) danhu 于 2022-01-13 09:46:42 发布 android10 …...

云计算实验如何结合AI来提高效率!

随着AI助手的流行&#xff0c;我们现在无论是学习还是工作都会带着一个他/她&#xff0c;如何让AI助手提高我们的工作效率是我们需要进化的方向。下面结合“云计算实验”来分享一下如何让AI帮助我们学得更快学得更好。 一、学习某个软件或复杂命令 比如在学习RockyLinux9.2中…...

前端路由hash和history的六大区别

前端路由hash和history的区别 前言谁的URL有#回车刷新时hash和history变化 谁支持低版本浏览器hash不会重新加载页面谁有历史记录谁需要后台配置hash缺点 前言 本文主要讲解hash和history路由的区别&#xff0c;那么好本文正式开始。 谁的URL有# 路由Hash的地址上有#,而hist…...

解决多选删除页面不同步问题

多选删除一般有两种情况&#xff1a; 1&#xff0c;删除接口支持传多个id&#xff0c;这是最理想的方法&#xff0c;建议大家积极与后端进行沟通解决。之后只需要判断接口回调刷新页面即可&#xff01; 2&#xff0c;删除接口不支持传多个id&#xff0c;这就是接下来我们要处…...

QQ空间上传一次 500张限制突破记录

手机又好多照片了&#xff0c;用手机上传耽误时间&#xff0c;就导出到电脑了&#xff0c;上传到qq空间去。 结果发现不开通黄钻无法上传原图&#xff0c;那就开通吧&#xff01; 开通了黄钻&#xff0c;居然不能一次上传超过 500 张&#xff0c;开通有何用&#xff1f; 五千…...

springboot3.x+springsecurity6.x多种方式登录验证

最新的 Spring Security 5.7 及以上版本&#xff0c;更新了不少内容&#xff0c;之前的 WebSecurityConfigurerAdapter 已经被废弃了&#xff0c;而且&#xff0c;要同时实现用户名密码登录、手机验证码登录、邮箱、微信小程序等登录方式&#xff0c;跟之前的配置方式都会有所不…...

【数据结构实验】图(二)将邻接矩阵存储转换为邻接表存储

文章目录 1. 引言2. 邻接表表示图的原理2.0 图的基础知识a. 类型b. 表示 2.1 有向权图2.2 无向权图2.3 无向非权图2.4 有向非权图 3. 实验内容3.1 实验题目&#xff08;一&#xff09;数据结构要求&#xff08;二&#xff09;输入要求&#xff08;三&#xff09;输出要求 3.2 算…...

【LeetCode】挑战100天 Day15(热题+面试经典150题)

【LeetCode】挑战100天 Day15&#xff08;热题面试经典150题&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-172.1 题目2.2 题解 三、面试经典 150 题-173.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&…...

面试:RabbitMQ相关问题

文章目录 简单介绍RabbitMQRabbitMQ架构什么是 RabbitMQ&#xff1f;有什么显著的特点&#xff1f;RabbitMQ 有那些基本概念&#xff1f;RabbitMQ routing 路由模式消息怎么路由&#xff1f;RabbitMQ publish/subscribe 发布订阅(共享资源)能够在地理上分开的不同数据中心使用 …...

SpringMVC系列-7 @CrossOrigin注解与跨域问题

背景 前段时间帮同事分析了一个跨域问题&#xff0c;正好系统分析和整理一下。 1.跨域 理解同源策略是理解跨域的前提。同源策略定义如下&#xff1a; 在同一来源的页面和脚本之间进行数据交互时&#xff0c;浏览器会默认允许操作&#xff0c;而不会造成跨站脚本攻击&#x…...

[RK-Linux] misc分区详解

misc 其实是英文 miscellaneous 的前四个字母,杂项、混合体、大杂烩的意思。 misc 分区的概念来源于 Android 系统,Linux 系统中常用来作为系统升级时或者恢复出厂设置时使用。 misc 分区的读写:misc 分区在以下情况下会被读写。 Uboot:设备加电启动时,首先启动 Uboot,…...

用户与组管理:如何在服务器系统中管理用户和权限

你是否想过&#xff0c;当你登录到一个服务器系统时&#xff0c;你是如何被识别和授权的&#xff1f;你是否知道&#xff0c;你可以通过创建和管理用户和组来简化和优化你的系统管理工作&#xff1f;你是否想了解一些常用的用户和组管理命令和技巧&#xff1f;如果你的答案是肯…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...