C++ 快速排序算法

1、快速排序

步骤:

  1. 确定分界点 通常选 Q[L]、Q[(L+R)/2]、Q[R]
  2. 调整范围 使左边的 <=X 右边 >= X
  • 也就是 左右两边的指针,依次比较定义的分界点(X)
  • 根据比较大小调整顺序
  1. 依次递归处理左右两端

模板代码:

c++ 复制代码
// 数组  L=左边边界 R=右边边界  
void quick_sort(int q[], int L, int R) {
	//判断边界
	if (L >= R) return;

	//定义分界点
	int x = q[L];
	//定义边界 因为后面是先移动 后判断 所以将指针左右移动一格
	int left = L - 1;
	int right = R + 1;

	//这里的while条件是 左边指针和右边指针没有相遇 就继续执行
	while (left < right)
	{
		//两个指针向中间移动
		do left++;  while (q[left] < x);
		do right--; while (q[right] > x);

		if (left < right) swap(q[left], q[right]);
	}

	//对左右两边递归 再次进行分类
	quick_sort(q, L, right);
	quick_sort(q, right + 1, R);
}
相关推荐
Mr_Xuhhh12 分钟前
算法题解博客:三道经典题目的思路与实现
算法
算法-大模型备案 多米12 分钟前
大模型备案实操指南:材料、流程与避坑要点
大数据·网络·人工智能·算法·文心一言
顾温15 分钟前
数据转换函数
开发语言·算法
·心猿意码·16 分钟前
C++ volatile 与 std::atomic 底层语义剖析
c++
Tanecious.20 分钟前
蓝桥杯备赛:Day1-奖学金
c语言·c++·蓝桥杯
汉克老师22 分钟前
GESP2025年6月认证C++三级( 第三部分编程题(1、奇偶校验)
c++·算法·gesp三级·gesp3级·按位操作
CoderCodingNo22 分钟前
【GESP】C++八级考试大纲知识点梳理 (8) 算法优化技巧
开发语言·c++
Fcy64826 分钟前
算法基础详解(一)模拟算法与高精度算法
算法·模拟算法·高精度算法
Promise微笑28 分钟前
算法对齐还是实战突围?解构GEO优化中方法论与实践的权重博弈
算法
米粒132 分钟前
力扣算法刷题 Day 29
算法·leetcode·职场和发展