[freenet-dev] [freenet-cvs] r19340 - trunk/freenet/src/freenet/support

Matthew Toseland toad at amphibian.dyndns.org
Tue Apr 15 10:45:20 UTC 2008


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 : http://emu.freenetproject.org/pipermail/devl/attachments/20080415/b7624672/attachment.pgp 


More information about the Devl mailing list