那为什么不写成 while(i > j)呢
来源:3-7 双路快速排序法
慕仰2587564
2018-12-09
写回答
3回答
-
慕仰2587564
提问者
2018-12-09
明白了
00 -
慕仰2587564
提问者
2018-12-09
这个while(true)替换掉,就不用写下边的if了,我一般听完老师的思路就会先用代码去写一下,然后对比哪里不一样,没想到老师会亲自回复012018-12-09 -
liuyubobobo
2018-12-09
抱歉,你说的是哪里写成while(i > j)?
==========
首先你说的应该是改成while(i <= j),因为if中是循环退出的条件;while中是循环结束的条件:)
其次,不能这么做,逻辑不等价。想一下,原先的if是在上面两个while对索引i,j操作以后。这轮操作以后,i如果大于j,才进行交换。但是将这个if扔掉,这里就有可能在这轮操作以后,虽然i大于j,但仍进行交换(错误的),之后转进while才退出循环。
实际编程这样写以后,用小数据调试试试看?体会一下这样写是不是有问题,如果有问题问题在哪里。这就是进步的根源哦:)
加油!:)
00
相似问题