快速排序(简单易懂的代码)

快速排序是经常用到的排序算法,也是C++的STL库中用到的一种排序算法,这里手动实现以下,供自己回忆,供他人参考 ~

#include <bits/stdc++.h>
using namespace std;

// 找轴点
int partition(vector<int> &vec, int low, int high) {
	//找轴点
	int pivot = vec[low];
	while (low < high) {
		while (low < high && vec[high] >= pivot) high--;
		vec[low] = vec[high];  //交换1 
		while (low < high && vec[low] <= pivot) low++;
		vec[high] = vec[low];  //交换2  
	} 
	// 把轴点的值归位
	vec[low] = pivot;
	// 返回轴点位置 
	return low; 
} 

// 快速排序
void quickSort(vector<int> &vec, int low, int high) {
	if (low >= high) {
		return;  // 递归出口 
	}
	// 找到轴点
	int mid = partition(vec, low, high);
	// 递归
	quickSort(vec, low, mid - 1);
	quickSort(vec, mid + 1, high);
} 

int main() {
	// 初始化一个待排序的向量 
	vector<int> vec = {1, 8, -6, 12, 5, 9};
	// 调用自己写的快排 
	quickSort(vec, 0, vec.size() - 1);
	// 打印出排序之后的结果 
	for (auto x : vec) {
		cout << x << ",";  // -6,1,5,8,9,12, 
	}
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QianZ423

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值