那为什么不写成 while(i > j)呢

来源:3-7 双路快速排序法

慕仰2587564

2018-12-09

写回答

3回答

慕仰2587564

提问者

2018-12-09

明白了

0
0

慕仰2587564

提问者

2018-12-09

//img.mukewang.com/szimg/5c0cea460001475915001500.jpg
这个while(true)替换掉,就不用写下边的if了,我一般听完老师的思路就会先用代码去写一下,然后对比哪里不一样,没想到老师会亲自回复

0
1
liuyubobobo
我补充在原答案中了。加油:)
2018-12-09
共1条回复

liuyubobobo

2018-12-09

抱歉,你说的是哪里写成while(i > j)?


==========


首先你说的应该是改成while(i <= j),因为if中是循环退出的条件;while中是循环结束的条件:)


其次,不能这么做,逻辑不等价。想一下,原先的if是在上面两个while对索引i,j操作以后。这轮操作以后,i如果大于j,才进行交换。但是将这个if扔掉,这里就有可能在这轮操作以后,虽然i大于j,但仍进行交换(错误的),之后转进while才退出循环。


实际编程这样写以后,用小数据调试试试看?体会一下这样写是不是有问题,如果有问题问题在哪里。这就是进步的根源哦:)


加油!:)

0
0

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

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

11186 学习 · 1614 问题

查看课程