用java写二分搜索,要求数组是由用户输入,再输入时,数组是无序的,要对数组进行从小到大的排序

 我来答
txlaok
2014-03-19 · TA获得超过1035个赞
知道小有建树答主
回答量:476
采纳率:100%
帮助的人:182万
展开全部
二分查找又称折半查找,它是一种效率较高的查找方法。
  【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。

/**
* 二分查找又称折半查找,它是一种效率较高的查找方法。
  【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。
* @author Administrator
*
*/
public class BinarySearch {
public static void main(String[] args) {
int[] src = new int[] {1, 3, 5, 7, 8, 9};
System.out.println(binarySearch(src, 3));
System.out.println(binarySearch(src,3,0,src.length-1));
}

/**
* * 二分查找算法 * *
*
* @param srcArray
* 有序数组 *
* @param des
* 查找元素 *
* @return des的数组下标,没找到返回-1
*/
public static int binarySearch(int[] srcArray, int des){

int low = 0;
int high = srcArray.length-1;
while(low <= high) {
int middle = (low + high)/2;
if(des == srcArray[middle]) {
return middle;
}else if(des <srcArray[middle]) {
high = middle - 1;
}else {
low = middle + 1;
}
}
return -1;
}

/**
*二分查找特定整数在整型数组中的位置(递归)
*@paramdataset
*@paramdata
*@parambeginIndex
*@paramendIndex
*@returnindex
*/
public static int binarySearch(int[] dataset,int data,int beginIndex,int endIndex){
int midIndex = (beginIndex+endIndex)/2;
if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex){
return -1;
}
if(data <dataset[midIndex]){
return binarySearch(dataset,data,beginIndex,midIndex-1);
}else if(data>dataset[midIndex]){
return binarySearch(dataset,data,midIndex+1,endIndex);
}else {
return midIndex;
}
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
紫色梦幻228988
2014-03-19 · 超过11用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:31.5万
展开全部
用户输入数据,每输入一个数据进与当前数据进行比较,直到输入完也拍好了序。然后就是二分查找,至于查找可用Arrays.binarySearch (a, key)方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yugi111
2014-03-18 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
二分查找法:要求数组是有序的,然后对半搜索,查找目标儿

binarySearch

// 系统方法
Arrays.binarySearch (a, key)
追问
能完善一下吗?就当用户输入的是有序的
追答
那更简单了,就一句搞定了

如果没有排序2句搞定

int[] array = new int[]{3,2,1,6,7};
Arrays.sort(array);
Arrays.binarySearch(array, 6);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式