as3.0二分查找----- 已经封装

在一些程序中 我们常常需要用到查找 由于 for循环效率太低  现在的一项目又需要数据量比较大的查找  所以将二分查找封装了!

 

 

 /*

算法类  现在只有二分查找    binarySearch


*/

package utils{
 
 public class Algorithm{
  /*
   *
   * version :1.01
   *
   * author:  夜梦惊魂 _dreamnight
   * blog : http://blog.csdn.net/hu3697
   * email: hujun36978@yahoo.cn
   *
   * */
  
  
 
 private static   var  index:int=0
 
 /*
 二分查找: 根据数组里面的值查它的索引,假如查到了就返回所在索引 ,否则返回 -1
该数组是有序数组 ,从小到大排列的 
  target 为索要查找的对象     函数返回的是该target对象 在数组中的索引,假如在数组中不存在就返回-1
 
  用法:
 

  var a:Array=[1,3,6,9,12,15,16,200,500] 
var s:int=Algorithm.binarySearch(a,200);//搜索
trace(s)
 
 
*/


public static   function binarySearch(array:Array,target:int):int{
 
 
 Algorithm.reset();
  return Algorithm.search(array,target);
 
 
 }
 
 
 
 
 private  static  function  search(array:Array,target:int):int
 {
 var midIndex:int = int(array.length / 2);
 

 var mid:int = array[midIndex];
  if (target == mid){
   
   trace("找到了");
   index+=midIndex
   trace(index);
    return index
   
   }
  
 if (! midIndex)//mid 为0
 {
  trace("数组中不存在该值");
  index=-1
  return  index;

 }
 
 
 var leftArray:Array = array.slice(0,midIndex);
 var rightArray:Array = array.slice(midIndex,array.length);
 
 
 

  if (target > mid)
  {
   index+=midIndex
   search(rightArray,target);


  }
  else
  {
   //index+=midIndex
   search(leftArray,target);

  }

 

 return index;

 

}
/*
将index重置为0   便于下一次搜索

*/
 private  static function reset():void{
  
  index=0
  
  
  
  } 
  
    
 
 }
 
 
 
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值