老师,为什么要在partition函数中将 arr【l】复制给v,不可以直接用arr【l】与arr【i】进行比较吗?

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

陈新宇

2017-09-24

写回答

1回答

liuyubobobo

2017-09-25

完全可以:)


在这里,我习惯赋值给v,一方面语意更清晰,v就是我们的“标定点的值”,每次元素都和标定点作比较,阅读起来不需要翻译arr[l]就是我们的标定点;另一方面有一定的优化作用,减少了不停地在arr数组中寻找索引l的位置的元素的操作。


不过必须强调:后一个原因是次要的。在现代计算机中,这种优化的效果很少,而且很多时候编译器可以在底层帮助你优化。总体而言,在现代计算机上做代码实现,在算法一致的情况下,应该尽可能选择可读性强的实现写法。如果你有充足的理由任务使用arr[l]可读性更强,并且整个团队成员都认可的话,就应该使用arr[l]:)

1
0

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

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

11209 学习 · 1617 问题

查看课程