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>