• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>FLASH AS 编程>AS进阶篇>文章内容
  • 数组二叉查找算法(as2.0)
  • 来源:riafan.com 作者:Flying 2008-01-22 【

该算法首先找到数组中间位置的元素,并将其与查找值比较,如果相等,就返回该元素的索引;否则就将问题简化为查找数组的一半元素。如果查找值小于中间元素,就查找数组的前半部分,否则就查找数组的后半部分。看下面代码:

package {
	import flash.display.Sprite;

	/**
	 * @author Flying
	 */
	public class Array2 extends Sprite {
		public function Array2() {
			var array : Array = [4, 5, 6, 7, 9, 13, 17];
			trace("13的索引位置: " + indexOf(array, 13));
		}

		/** 采用二叉查找算法 */
		public static function indexOf(array : Array, value : int) : int {
			var low : int = 0;
			var high : int = array.length - 1;
			var middle : int;

			while (low < high) {
				middle = (low + high) / 2; 
				// 计算中间元素的索引
				print(array, middle); 
				// 打印数组,用于跟踪查找过程
				if (array[middle] == value)
				return middle;

				if (value < array[middle])
				high = middle;
			else
				low = middle;
			}
			return -1; // 没有找到该元素,返回-1
		}

		private static function print(array : Array, middle : int) : void {
			for (var i : uint = 0;i < array.length; i++) {
				trace(array[i]);
				if (i == middle)
				trace("*");
				trace("  ");
			}
		}
	}
}

/*
4  5  6  7*  9  13  17  
4  5  6  7  9*  13  17  
4  5  6  7  9  13*  17  
13的索引位置:5
*/

为方便测试,继承了Sprite类。





上一篇:数组冒泡排序(as2.0)   下一篇:深入了解Flash AS中的setInterval方法(as2.0)
您的评论
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)