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

快速排序(简单易懂的代码),第1张

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

#include 
using namespace std;

// 找轴点
int partition(vector &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 &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 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;
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/713656.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-24
下一篇2022-04-24

发表评论

登录后才能评论

评论列表(0条)

    保存