❤️全面图解快速排序,详细图文并茂解析!❤️

图解快速排序算法
本文详细介绍了快速排序算法的原理和实现过程,通过思维导图辅助理解。首先选取基准数,然后通过分区操作将数组分为两部分,分别对两部分进行递归排序,最终达到整个序列有序。代码示例展示了快速排序的详细步骤,包括从左右两侧寻找合适元素填坑的过程。文章还分析了快速排序的时间复杂度为O(nlogn)和空间复杂度为O(1),并指出其不稳定性。

写在前面:

大家好,我是时光。

今天给大家带来的是排序算法中的快速排序。
我采用图解方式讲解,争取写透彻。话不多说,开始!

思维导图:

思维导图

1,快速排序概念

通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。主要采用分治法挖坑填数等方法,分治法就是大问题分解成各个小问题,堆小问题求解,使得大问题得以解决。

2,算法思路

我们先搞清楚这个堆排序思想,先把逻辑搞清楚,不着急写代码。

我们首先有一个无序数组,比方说

int[] arr={
   
   4,2,8,0,5,7,1,3,9};

2.1,第一步,取基准数

基准数(枢轴),取数组的第一个元素,此时基准数:arr[0]=4

基准数图

并定义两个变量i和j分别指向无序数组的第一个元素start和最后一个元素end。

//起始
int i=start;
int j=end;
//获取基准数
int temp=arr[start];

2.2,第二步,分区过程

分区过程,将比基准数大的数全放到它的右边,比基准数小的或者相等的数全放到它的左边。

我们首先把第一个元素arr[0]=4定义为基准元素,此时数组第一个位置就是坑,那么我们要从数组的右边向左开始查找小于基准数的元素,并与坑互换位置。

从右至左查找

while(i<j){
   
   
    //从右向左去找比基准数小的
    while(i<j&&arr[j]>=temp){
   
   
        j--;
    }
    //判断相等,填坑
    if(i<j){
   
   
        arr[i]
评论 44
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值