【排序算法 一】快排算法-递归(C/C++)

这篇博客介绍了快速排序算法的基本思想,采用分治法,通过选择基准数将元素分区,并递归进行排序。文章讨论了算法的时间复杂度和空间复杂度,在最好情况下为O(nlogn),最坏情况下为O(n^2)。尽管空间复杂度在平均和最优情况下为O(logn),但由于非稳定比较,快速排序并不保证相同元素的相对顺序。最后,提供了C++实现快速排序的递归代码。
摘要由CSDN通过智能技术生成

快速排序算法的思想

快速排序是对冒泡排序的改进,它使用分治法的思想,每次循环根据指定的基准数,将其他元素分别放置其左右(升序排序,大的放右小的放左),第二次循环,以基准数为中心,分为左右两部分,每部分再通过新的基准数排序…
(不做具体举例说明,直接分析时间复杂度然后粘贴代码)

快速排序算法的时间/空间复杂度

排序n个项目要比较O(n log n)次比较

  • 在最优的情况下,快速排序算法的时间复杂度为O(nlogn)。

  • 在最坏的情况下,快速排序算法的时间复杂度为O(n2

  • 最好情况,递归树的深度为log2n,其空间复杂度也就为O(logn)。

  • 最坏情况,需要进行n‐1递归调用,其空间复杂度为O(n),平均情况,空间复杂度也为O(logn)。

可惜的是,由于关键字的比较和交换是跳跃进行的, 因此,快速排序是一种不稳定的排序方法。

快排算法的代码实现-递归(C++)

#include <iostream>
using namespace std;

void quick_sort_recursive(int arr[], int start, int end)
{
   
	if (start > end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值