视频[3-5快速排序法的09:14]. Q:为什么j的初始值是l,而不是l+1或者l-1?

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

agjsytt

2018-01-17

第16行代码: Line16

Q: 为什么j初始化为l.

我的理解:  因为i的初始值一定是l+1.  如果j初始化为l+1或l-1都会导致循环不变量不满足定义,所以j只能初始化为l.


写回答

1回答

liuyubobobo

2018-01-17

大赞!


其实初始值也可以是l+1,但是这样的话,相当于j的定义发生了改变,循环不变量也是另外的样子了,后面的逻辑相应的也要发生改变。有时间可以试试看,改变循环不变量的定义,相应的逻辑怎么写?


这个问题在二分查找法中非常突出。我在这个课程中实现二分查找的时候提及了。在《玩转算法面试》的课程中,我又对不同的变量定义,怎么相应的改写二分查找法的逻辑进行了具体实现。可以参见《玩转算法面试》3-1,3-2两个小节:)


加油!

0
2
agjsytt
非常感谢!
2018-02-13
共2条回复

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

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

11211 学习 · 1617 问题

查看课程