快速排序——栈和数组——两种思路(递归+挖坑填埋法)

本文介绍了快速排序的两种实现方式,一种利用栈的递归思想,另一种采用挖坑填埋法通过数组操作。首先,选定一个基准值,确保其左边元素小于基准,右边元素大于基准。对于栈实现,从基准开始,找到较小元素插入到基准前,并对子序列递归。数组实现中,基准值被保存,从右向左寻找小于基准的数填入,然后从左向右找大于基准的数填充新产生的坑,直至左右指针相遇完成排序。
摘要由CSDN通过智能技术生成

原理:选取一个数,使得这个数的左边比这个数小,右边的数比这个数大。

接下来的问题是如果实现这个过程。


第一种用栈做


用栈做就太简单了。

直接锁定1。

从3开始往后找。

找到小的数,直接插入到1的前面。

再对每一部分进行递归。


这里是找到了 0 0,新序列是 0 0 1 3 6 2 8 4 8

接下来就是 0 0里找

再是3 6 2 8 4 8里找。

。。。


这里用List模拟的栈

// 136284008List实现太轻松了
void calculate(List<Integer> list, int startIndex, int endIndex) {
 // origin index 0 size-1
    if (startIndex == endIndex || startIndex + 1 == endIndex) {
        return;
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值