
今天遇到以前同事写的一个坑,数组没有先排序,所以在数组里查找结果就不对了。我刚刚检查代码时也没有注意到这一点, 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 所见即所知 |