一个数组,用二分法怎么查找一个数的某个位置,怎么写? 比如数组 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; } }这里用到递归 关于FILE的一个小问题,有兴趣的帮下 i=i++;i=? 关于getParameter()方法的问题! 关于jxta在jBuilder中运行的问题,高分!! 关于日期格式化的处理 简单的麻烦问题! 谁有关于DragAndDrop的资料 一个exception问题 虽然是菜鸟,但在过年这个节骨眼上,也该送点分意思意思,来者有份(明天中午结贴) 小弟在这先谢过了:N天无人搭理my question???? 新人求教 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;
}
}
这里用到递归