二分法和位运算的代码


/**
* 二分查找法,没有找到则返回-1,否则返回查找到的位置,从0开始
* @param a
* @param target
* @return
*/
public int binarySearch(int a[],int target){
int low=0;
int high=a.length-1;
while(low<=high){
int mid=(low+high)>>>1;//无符号右移一位,即相当于绝对值除2
int midValue=a[mid];
if(midValue low=mid+1;
}else if(midValue>target){
high=mid-1;
}else{
return mid;
}
}
return -1;
}

/**
* 随机产生数组,数组长度不大于maxArraySize+1,数据不大于maxValue
* @param maxArraySize
* @param maxValue
* @return
*/
public int[] generateRandomSortedArray(int maxArraySize, int maxValue) {
Random rand=new Random();
int arraySize = 1 + rand.nextInt(maxArraySize); //至少保证有1个数据
int[] randomArray = new int[arraySize];
for (int i = 0; i < arraySize; i++) {
randomArray[i] = rand.nextInt(maxValue);
}
Arrays.sort(randomArray);
return randomArray;
}

测试代码

System.out.println("二分法查找结果:"+obj.binarySearch(a, 15));

你可能感兴趣的:(j2EE)