一个数组,用二分法怎么查找一个数的某个位置,怎么写?

qbfbi008 2010-01-24 10:51:57
比如数组 a[]={2,45,12,20,5,9,1,17}

用二分法找到12这个数的位子怎么用程序写?
别用冒泡法
谢谢各位了~~~
...全文
1548 13 打赏 收藏 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT界的厨师 2011-03-31
  • 打赏
  • 举报
回复
没排序不能用二分查找。
Dazzlingwinter 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qbfbi008 的回复:]
8楼是个SB
[/Quote]
丫个驴日的,不会写得瑟毛毛啊...
shenzhengfeng_2008 2010-01-25
  • 打赏
  • 举报
回复
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;
}
}


这里用到递归 。。。
shenzhengfeng_2008 2010-01-25
  • 打赏
  • 举报
回复
先得对数组进行排序。。。
Dazzlingwinter 2010-01-25
  • 打赏
  • 举报
回复
无序的数组而二什么分啊,太二了...
BearKin 2010-01-25
  • 打赏
  • 举报
回复
数据结构书上写的二分法 是利用递归 在方法内部中不断的更改查找范围并调用自身来实现的
不过前提是 该数组有序
大概方式是 每次调用方法 根据该方法的值 并且与当前查找范围的中间数比较(基础的是这样 当然也有改良的N分法..) 然后根据比较结果修改范围直到正确那一刻..

本来想给你发个例子的 无奈我空间上不去 邮件打不开 中午有时间我给你写个吧..
psyuhen 2010-01-25
  • 打赏
  • 举报
回复
无语了。

qbfbi008 2010-01-25
  • 打赏
  • 举报
回复
8楼是个SB
junmasky 2010-01-24
  • 打赏
  • 举报
回复
二分查找的前提条件必须保证你的数组是有序的,然后才能用二分查找,所以你先得将数组进行排序,下面是我写的二分查找的方法

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;
}
why675059192 2010-01-24
  • 打赏
  • 举报
回复
哥们!查找中没有冒泡查找这种说法 只有冒泡排序! 还有二分法查找(即折半查找) 要求的是数组必须是有顺序的 ! 要不不能二分法查找! 对于你这个数组没有顺序 必须先进行排序!在二分法查找,这样的话还不如直接查找的好 !
amdgaming 2010-01-24
  • 打赏
  • 举报
回复
冒泡是排序 算法啊,楼主,,

你这个 直接 用 jdk api就可以实现了,

二分法 其实很简单,自己 试着写下,看 清原理就会了
爱摸鱼de老邪 2010-01-24
  • 打赏
  • 举报
回复
Arrays.binarySearch(a,12);
爱摸鱼de老邪 2010-01-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 qbfbi008 的回复:]
比如数组 a[]={2,45,12,20,5,9,1,17}

用二分法找到12这个数的位子怎么用程序写?
别用冒泡法
谢谢各位了~~~
[/Quote]
呵呵,如果是用Java写,很简单
Arrays.sort(a);
Arrays.binarySearch(a);

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧