今天遇到以前同事写的一个坑,数组没有先排序,所以在数组里查找结果就不对了。我刚刚检查代码时也没有注意到这一点, debug 后这才想起要先排序。
1
rogerchen 2016-02-19 20:16:41 +08:00
You do not pay for what you do not need.
|
2
publicID002 2016-02-19 20:24:12 +08:00
不然呢?每次都检查下是否是排序的,没排的话排一下?不说效率, binarySearch 这个方法里修改了数组是一个好的设计吗?
|
3
echo1937 2016-02-19 20:33:41 +08:00
这个锅 Java 不背啊,叔叔,我们不背。
|
4
billlee 2016-02-19 21:27:03 +08:00
函数名应该和功能相符
|
5
sengxian 2016-02-19 21:43:04 +08:00
那样复杂度就是 O(nlogn) 的了,完全没有二分搜索的意义了啊。
|
6
FrankFang128 2016-02-19 21:48:17 +08:00 via Android
SortAndBinarySearch 才是你想要的
|
7
iyangyuan 2016-02-20 05:54:16 +08:00 via iPhone
解耦
|
8
zhjits 2016-02-20 10:28:14 +08:00
应该有一个继承 Array 类的 SortedArray 类,然后实现 SortedArray.binarySearch 方法
|
9
tchekai704 2016-02-20 15:48:07 +08:00 via iPhone
一个方法只做它申明的,不做多余的。 binarySearch 和 sort 有一毛钱关系吗?
|
10
sweelia 2016-02-20 16:08:04 +08:00 via Android
实际上,二分查找不应该改变原始数据。是只读的。如果你确信原始数据可以被改动,那就先排序再给它吧。
|
11
SoloCompany 2016-02-20 18:46:53 +08:00 via iPhone
其实你需要的函数名字叫做 linearSearch
|
12
snnn 2016-02-20 21:51:45 +08:00
binarySearch 这个方法很少很少用。楼主还是描述下你的使用场景吧,我怀疑你改完后还是错的。
|
13
Honwhy 2016-02-20 23:17:26 +08:00
@FrankFang128 SortAndBinarySearch 这一个函数有两个职责,不太符合职责单一原则。
事实我写过很多 xxAndyy 的函数,后续改起来感觉耦合很多 |
14
h4x3rotab 2016-02-21 11:07:12 +08:00 via iPhone
就是为了排一次序搜索多次才要分两步,就搜索一次,扫一遍都比排序快
|
15
thinkmore 2016-02-22 09:44:45 +08:00
所见即所知
|