老师,快排,堆栈溢出了,!!!

来源:3-5 快速排序法 - Quick Sort

我会回来的333

2021-05-03

图片描述
老师这里我写==和您写>=有什么区别嘛?我感觉都一样,所以我写了等等,然后就堆栈溢出了,这是无限递归了?

写回答

3回答

liuyubobobo

2021-05-03

l 是有可能大于 r 的。当 l > r 的时候,从逻辑的角度,不应该做任何事情,因为此时表示要处理的区间 arr[l, r] 为空。但是如果不 return,在下面会继续处理。


换一个小数据量,尝试跟踪一下试试看?


继续加油!:)

1
1
我会回来的333
老师您再看下我的想法
2021-05-03
共1条回复

我会回来的333

提问者

2021-05-04

老师我把我的代码又测了测近乎有序数组结果

//img.mukewang.com/szimg/6090b91509f5ce8a10790663.jpg

//img.mukewang.com/szimg/6090dff809795fb209040558.jpg

这个是有序元素越多它就会树越高,高到一定程度应该就会溢出了

0
0

我会回来的333

提问者

2021-05-03

//img.mukewang.com/szimg/609018b809762a8106870774.jpg

想了半天,老师终于想成这样的结果了,第一个递归处理的是[0~上面每个j)的元素,当j左边没有元素的时候第一个递归就到最低层了,现在看l和r的大小,l>r,第二个递归处理的是(上面每个j~右边剩下的元素],当j右边只有一个元素的时候第二个递归就到最低层了,现在看l和r的大小,l=r,所以说是两种情况一种为空的情况停止递归,一种为一个元素的情况停止递归,不知道我理解的对不对呢?波波老师?

还有老师,这里我测试的是随机从1-100的取值的元素,100万个,然后测试结果,如果测试1-10取值的话就直接溢出了

//img.mukewang.com/szimg/6090c9d009c3433509940587.jpg

0
3
我会回来的333
回复
liuyubobobo
我知道了,我设置的无序数组的元素取值范围设置小了,它里面的重复元素就多了,所以慢,我应该设置元素取值1-100万,这样它就重复的不多了
2021-05-04
共3条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程