二分法程序例子

本文详细介绍了一种高效的搜索算法——二分法搜索,并通过JavaScript和Java两种语言实现了该算法。通过对有序数组进行查找,展示了如何减少搜索次数,提高搜索效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<script>
var a=new Array(3,6,8,10,12,15,16,18,21,25,30);
//var a=["林大头","王大头","陈大头","张大头","李大头","郑大头","黄大头"]

function seach(n){
 var low=0,mid,high=a.length-1;

 while( low <= high ){
  mid = Math.floor((low + high) / 2);
  if (a[mid]==n) return mid;
  if (a[mid]<n) low=mid+1;
  else high=mid-1;
 }
 return -1;
}

alert(seach(15));
</script>

java版本的二分法算法实现


/**
文件名:ErFenFa.java
描述:在一个已经排好顺序的数字序列中,找出某个已知数字的位置
作者:慈勤强
Email:
cqq1978@Gmail.com
Http://blog.youkuaiyun.com/cqq
**/

 

class ErFenFa
{
 int[] iArray={1,5,9,14,27,39,41,50,62,222,345,612,981,1207,8721}; //在此数字序列中寻找
 int iSeek=345;   //寻找345的位置
 int iCount=0;   //比较的次数 
  
 public int xunhuan()
 //普通的循环法,最少需要比较一次,比如查找1,最多需要比较15次,比如8721
 {
  for(int i=0;i<iArray.length;i++)
  {
   iCount++;
   if (iSeek==iArray[i])
    break;
  }
  return iCount;
 }

 public int erfen()
 //二分法查找
 {
  int iIndex=0;   //相当于指针的东西
  int iStart=0;   //
  int iEnd=iArray.length-1;
  while(true)
  {
   iCount++;
   iIndex = (iStart+iEnd)/2;
   if(iArray[iIndex]<iSeek)
   {
    iStart = iIndex;
   }
   else if(iArray[iIndex]>iSeek)
   {
    iEnd = iIndex;
   }
   else
   {
    break;
   }
  }
  return iCount; 
 }

 public static void main(String[] args)
 {  
  ErFenFa eff=new ErFenFa();
  ErFenFa eff1=new ErFenFa();  
  System.out.println("普通的循环查找,需要比较的次数:"+eff.xunhuan());
  System.out.println("二分法查找,需要比较的次数:"+eff1.erfen());
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值