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);
}
相关推荐
点云SLAM14 分钟前
C++内存泄漏检测之编译期 /运行时工具(ASan/Valgrind)
开发语言·c++·内存管理·错误排查·内存泄漏检测工具·valgrind工具·asan工具
MicroTech202516 分钟前
微算法科技(NASDAQ :MLGO)量子生成对抗网络(QGAN)技术,为网络安全防御提供了全新的技术路径
科技·算法·生成对抗网络
YuTaoShao18 分钟前
【LeetCode 每日一题】3507. 移除最小数对使数组有序 I
算法·leetcode·职场和发展
陳103025 分钟前
C++:多态
开发语言·c++
LYS_061832 分钟前
RM赛事C型板九轴IMU解算(3)(姿态融合算法)
c语言·算法·imu·姿态解算·四元数到欧拉角
LDG_AGI35 分钟前
【机器学习】深度学习推荐系统(三十一):X For You Feed 全新推荐系统技术架构深度解析
人工智能·深度学习·算法·机器学习·架构·推荐算法
tobias.b40 分钟前
408真题解析-2010-5-数据结构-树的结点数量计算
数据结构·算法·408真题解析
Fcy64842 分钟前
C++11 新增特性(上)
开发语言·c++·c++11·右值引用和移动语意
chilavert31842 分钟前
技术演进中的开发沉思-329 JVM:垃圾回收(中)
java·jvm·算法
酬勤-人间道1 小时前
XPlote3DGenie 2.1.1.0:实用 3D 数据处理工具,百度网盘可直接安装
c++·3d·gis·编程·计算机软件·岩土