一个数组,用二分法怎么查找一个数的某个位置,怎么写? 比如数组 a[]={2,45,12,20,5,9,1,17}用二分法找到12这个数的位子怎么用程序写?别用冒泡法谢谢各位了~~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 冒泡是排序 算法啊,楼主,,你这个 直接 用 jdk api就可以实现了,二分法 其实很简单,自己 试着写下,看 清原理就会了 二分查找的前提条件必须保证你的数组是有序的,然后才能用二分查找,所以你先得将数组进行排序,下面是我写的二分查找的方法public static int bSearch(int[] array,int key){ int low = 0; int high = array.length -1; int mid; while(low <= high){ mid = (low + high)/2; if(array[mid] == key){ return mid; } if(array[mid] > key){ high = mid - 1; }else{ low = mid + 1; } } return -1; } 呵呵,如果是用Java写,很简单Arrays.sort(a);Arrays.binarySearch(a); public int ArraySerach(int[] sArray, int data, int beginIndex, int endIndex) { // 先对数组进行排序 ... // 定义数组中间下标 int middleIndex = (beginIndex + endIndex) / 2; // 二分法查找目标数 if (sArray[middleIndex] > data) { return ArraySerach(sArray, data, beginIndex, middleIndex -1); } else if(sArray[middleIndex] < data) { return ArraySerach(sArray, data, middleIndex + 1, endIndex); } else { return middleIndex; } }这里用到递归 有两个疑惑,请各位大叔大婶指点一下:TreeSet是怎么排序的?接口中的方法为什么可以不用全部实现? JAVA文件流的读取问题。 socket问题 String s = "674654564684654654654564......"很长,怎样判断里面的数是否能整除7,要具体代码实现 关于LIST排序的问题,请高手支招。 SOCKET编程,如何设置它连接超时. 有关swing的小问题 请教高手:你们当初是怎么学习JAVA的? 求教如何在程序中调用windows的记事本??? 如何计算当前日期及以后15天的日期啊? 新人求教 java浮点数问题
int low = 0;
int high = array.length -1;
int mid;
while(low <= high){
mid = (low + high)/2;
if(array[mid] == key){
return mid;
}
if(array[mid] > key){
high = mid - 1;
}else{
low = mid + 1;
}
}
return -1;
}
Arrays.sort(a);
Arrays.binarySearch(a);
{
// 先对数组进行排序
...
// 定义数组中间下标
int middleIndex = (beginIndex + endIndex) / 2;
// 二分法查找目标数
if (sArray[middleIndex] > data)
{
return ArraySerach(sArray, data, beginIndex, middleIndex -1);
}
else if(sArray[middleIndex] < data)
{
return ArraySerach(sArray, data, middleIndex + 1, endIndex);
}
else
{
return middleIndex;
}
}
这里用到递归