排序算法:快速排序

文章介绍了快速排序算法,这是一种效率较高的排序方法,时间复杂度优于冒泡排序。其核心思想是通过分区操作,将数组按指定元素划分,然后递归地对分区进行排序,最终得到升序排列的数组。代码示例展示了如何使用C++实现快速排序算法。
摘要由CSDN通过智能技术生成

排序算法:快速排序


前言

快速排序是一种常见的排序算法,相比冒泡排序等算法在时间复杂度上有着较大的优势


一、快速排序

核心思想:对所有元素进行分区,使得在下标s前的元素的值都小于等于下标为s的元素值,之后的则大于s位置的元素值

建立这样的分区后,下标为s的元素所在的位置与目标升序数组中的位置相同;接下来就是对前后两个分区的数据使用同样的方式进行分区;直到每一个分区都只有一个元素

	// 将数组分区,并返回基准元素的索引
int partition(vector<int>& arr,int leftbound,int rightbound)
{
	int leftptr = leftbound+1;
	int rightptr = rightbound;
	int pivot = arr[leftbound];
	while(leftptr <= rightptr)
	{
		while(leftptr <= rightptr && arr[leftptr] < pivot)
		{
			leftptr++;
		}
		while(leftptr <= rightptr&& arr[rightptr] >= pivot)
		{
			rightptr--;
		}
		if(leftptr < rightptr)
		{
			swap(arr,leftptr,rightptr);
		}
	}
	swap(arr,leftbound,rightptr);
	return rightptr;
}
// 快速排序
void quickSort(vector<int>& arr, int low, int high) {
	if (low < high) {
		int pivotIndex = partition(arr, low, high); // 将数组分区
		quickSort(arr, low, pivotIndex - 1); // 对左侧子数组进行快速排序quickSort(arr, pivotIndex + 1, high); // 对右侧子数组进行快速排序
	}
}
// 打印数组
void printArray(const vector<int>& arr) {
	for (int num : arr) {
		cout << num << " ";
	}
	cout << endl;
}
int main() {
	vector<int> arr = {7, 2, 6, 3, 8, 1, 4, 5};
	int n = arr.size();cout << "原始数组: ";
	printArray(arr);
	quickSort(arr, 0, n - 1);cout << "排序后的数组: ";
	printArray(arr);
	return 0;
}

更多内容可以参考:
快速排序法(详解)
六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值