快速排序原理及c++实现

参考视频:https://www.bilibili.com/video/BV1K44y1k79z
具体原理看上面链接里面的视频就够了,下面简单讲一下快排和附上c++代码:
对于包含n个数的输入数组来说,快速排序是一种最坏情况时间复杂度为O(n²)的排序算法。
虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能很好,它的期望时间复杂度为O(nlgn),而且O(nlgn)中隐含的常数因子非常小。

//快速排序
void fastsort(vector<int>& nums, int left, int right) {
	if (left >= right)return;
	int q = partition(nums, left, right);
	fastsort(nums, left, q - 1);
	fastsort(nums, q + 1, right);
}
int partition(vector<int>& nums, int left, int right) {
	int i = left;
	for (int j = left; j <= right - 1; j++)
		if (nums[j] <= nums[right])
			swap(nums[i++], nums[j]);
	swap(nums[i], nums[right]);
	return i;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值