Java tutorial
//package com.java2s; /* * @(#)$Id: ArrayUtils.java 3619 2008-03-26 07:23:03Z yui $ * * Copyright 2006-2008 Makoto YUI * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. * * Contributors: Makoto YUI - ported from jakarta commons lang */ public class Main { public static int binarySearch(final Object[] a, final int fromIndex, final int toIndex, final Object key) { int low = fromIndex; int high = toIndex - 1; while (low <= high) { int mid = (low + high) >>> 1; Comparable midVal = (Comparable) a[mid]; int cmp = midVal.compareTo(key); if (cmp < 0) { low = mid + 1; } else if (cmp > 0) { high = mid - 1; } else { return mid; // key found } } return -(low + 1); // key not found. } public static int compareTo(final byte lhs[], final byte rhs[]) { if (lhs == rhs) { return 0; } final int len = Math.min(lhs.length, rhs.length); for (int i = 0; i < len; i++) { if (lhs[i] != rhs[i]) { return (lhs[i] & 0xFF) - (rhs[i] & 0xFF); } } return lhs.length - rhs.length; } public static int compareTo(final byte lhs[], final byte rhs[], final int offset) { final int len = Math.min(lhs.length, rhs.length); for (int i = offset; i < len; i++) { if (lhs[i] != rhs[i]) { return (lhs[i] & 0xFF) - (rhs[i] & 0xFF); } } return lhs.length - rhs.length; } public static int compareTo(final byte lhs[], final byte rhs[], final int offset, final int length) { int tolen = offset + length; final int limit = Math.min(Math.min(lhs.length, rhs.length), tolen); for (int i = offset; i < limit; i++) { if (lhs[i] != rhs[i]) { return (lhs[i] & 0xFF) - (rhs[i] & 0xFF); } } return 0; } }