Javaみたいなバイナリサーチ
やぼったい実装になっております
♥0 |
Line 52 |
Modified 2010-02-12 14:29:05 |
MIT License
archived:2017-03-30 04:41:23
ActionScript3 source code
/**
* Copyright uwi ( http://wonderfl.net/user/uwi )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/777p
*/
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.utils.getTimer;
// やぼったい実装になっております
public class Test extends Sprite {
private var _tf : TextField;
public function Test() {
_tf = new TextField();
_tf.width = 465;
_tf.height = 465;
addChild(_tf);
var s : int = getTimer();
var a : Array = [];
for(var i : int = 0;i < 100;i++){
a.push(Math.random());
}
a.sort(Array.NUMERIC);
tr(binarySearch(a, 0.5));
tr(binarySearch(a, 0));
tr(binarySearch(a, a[0]+ 0.00000001));
tr(binarySearch(a, a[99]- 0.00000001));
tr(binarySearch(a, 1));
tr(binarySearch(a, a[95]));
tr(binarySearch(a, a[0]));
tr(binarySearch(a, a[99]));
var g : int = getTimer();
tr((g - s) + " ms");
}
private function binarySearch(a : Array, v : Number) : int
{
var s : uint = 0;
var g : uint = a.length;
if(v > a[g-1])return -g-1;
if(v < a[0])return -1;
if(v == a[0])return 0;
do{
var m : uint = (s + g) >> 1;
if(v == a[m])return m;
if(v < a[m]){
g = m;
}else{
s = m;
}
}while(g - s > 1);
return -s - 2;
}
private function tr(...o : Array) : void
{
_tf.appendText(o + "\n");
}
}
}