我正在尝试将以下 java 二进制搜索例程转换为 as3。
我假设“compareTo”是内置的java方法,而“>>>”是一种按位运算。
任何熟悉 ActionScript 3 和 Java 的人都可以帮忙解决这个问题吗?
package binary;
public class Finder {
public static int find( String[ ] keys, String target) {
int high = keys.length;
int low = -1;
while (high - low>1) {
int probe = (low + high)>>> 1;
if (keys[probe].compareTo(target) > 0)
high = probe;
else
low = probe;
}
if (low==-1 || keys[low].compareTo(target) !=0)
return -1;
else
return low;
}
}
这是一个功能性的 AS3 版本:
public static function find(keys:Array, target:String):int {
var high:int = keys.length;
var low:int = -1;
while (high - low > 1) {
var probe:int = (low + high) / 2;
if (keys[probe] > target)
high = probe;
else
low = probe;
}
if (low == -1 || keys[low] !== target)
return -1;
else
return low;
}
顺便说一句,我会推荐你rename函数更有意义,比如binarySearch()
,这向调用者表明最好对数组进行排序。一个名字像find()
并不意味着这样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)