On Tuesday 15 April 2008 02:20, j16sdiz at freenetproject.org wrote:
> Author: j16sdiz
> Date: 2008-04-15 01:20:23 +0000 (Tue, 15 Apr 2008)
> New Revision: 19340
> 
> Modified:
>    trunk/freenet/src/freenet/support/Fields.java
>    trunk/freenet/src/freenet/support/SortedLongSet.java
> Log:
> fix and use Fields.binarySearch

Was it broken? I agree your version is shorter and more elegant, but was there 
a problem with the logic before? (For purposes of changelogs)?
> 
> 
> Modified: trunk/freenet/src/freenet/support/Fields.java
> ===================================================================
> --- trunk/freenet/src/freenet/support/Fields.java     2008-04-14 21:58:13 UTC 
(rev 19339)
> +++ trunk/freenet/src/freenet/support/Fields.java     2008-04-15 01:20:23 UTC 
(rev 19340)
> @@ -729,19 +729,17 @@
>               int begin = origBegin;
>               int end = origEnd;
>               while(true) {
> +                     if(end < begin) // so we can use origEnd=length-1 
> without worrying 
length=0
> +                             return -begin-1;
> +
>                       int middle = (begin + end) >>> 1;
>                       if(values[middle] == key)
>                               return middle;
>                       
>                       if(values[middle] > key) {
> -                             end = middle;
> -                             if(end - begin <= 1) {
> -                                     return -middle-1;
> -                             }
> +                             end = middle - 1;
>                       } else if(values[middle] < key) {
> -                             begin = middle;
> -                             if(end - begin <= 1)
> -                                     return -end-1;
> +                             begin = middle + 1;
>                       }
>               }
>       }
> 
> Modified: trunk/freenet/src/freenet/support/SortedLongSet.java
> ===================================================================
> --- trunk/freenet/src/freenet/support/SortedLongSet.java      2008-04-14 
> 21:58:13 
UTC (rev 19339)
> +++ trunk/freenet/src/freenet/support/SortedLongSet.java      2008-04-15 
> 01:20:23 
UTC (rev 19340)
> @@ -178,20 +178,6 @@
>       }
>  
>       private int binarySearch(long key) {
> -             int low = 0;
> -             int high = length - 1;
> -
> -             while (low <= high) {
> -                     int mid = (low + high) >>> 1;
> -                     long midVal = data[mid];
> -
> -                     if (midVal < key)
> -                             low = mid + 1;
> -                     else if (midVal > key)
> -                             high = mid - 1;
> -                     else
> -                             return mid; // key found
> -             }
> -             return -(low + 1); // key not found.
> +             return Fields.binarySearch(data, key, 0, length-1);
>       }
>  }
> 
> _______________________________________________
> cvs mailing list
> cvs at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20080415/b7624672/attachment.pgp>

Reply via email to