视频[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
大赞!
其实初始值也可以是l+1,但是这样的话,相当于j的定义发生了改变,循环不变量也是另外的样子了,后面的逻辑相应的也要发生改变。有时间可以试试看,改变循环不变量的定义,相应的逻辑怎么写?
这个问题在二分查找法中非常突出。我在这个课程中实现二分查找的时候提及了。在《玩转算法面试》的课程中,我又对不同的变量定义,怎么相应的改写二分查找法的逻辑进行了具体实现。可以参见《玩转算法面试》3-1,3-2两个小节:)
加油!
算法与数据结构(C++版) 面试/评级的算法复习技能包
11211 学习 · 1617 问题
相似问题
回答 1
回答 7
回答 2