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);
}
相关推荐
TANGLONG2228 分钟前
【C++】继承详解——基类/派生类、作用域、默认函数、菱形继承(超详细)
java·c语言·c++·经验分享·笔记·ajax
洛水水14 分钟前
【力扣100题】38.路径总和 III
算法·leetcode·深度优先
小侯不躺平.20 分钟前
C++ Boost库【2】 --stringalgo字符串算法
linux·c++·算法
code_whiter29 分钟前
C++11(stack和queue)
开发语言·c++
流年如夢32 分钟前
二叉树详解
c语言·数据结构·算法
用户8055336980339 分钟前
现代Qt开发教程(新手篇)2.1——QPainter 绘图基础
c++·qt
xiaoxiaoxiaolll40 分钟前
Nature Communications:三维超原子库+原子层保护,突破全彩VR超透镜量产瓶颈
人工智能·算法
仍然.41 分钟前
算法题目---栈
算法
feifeigo12344 分钟前
基于布谷鸟算法的配电网分布式电源选址定容 MATLAB 实现
开发语言·算法·matlab
计算机安禾1 小时前
【c++面向对象编程】第12篇:继承(二):构造与析构顺序,继承中的构造函数
开发语言·c++