表紙 | 新規 | 一覧 | RSS | 検索 | 閲覧履歴 | 作成履歴 | 更新履歴

bsearch関数 - YukiWikiベースのPonyWikiのソースを読んでみる その32

差分表示


[[YukiWikiベースのPonyWikiのソースを読んでみる]] その32

バイナリサーチをする関数。配列の添え字を返す。

---(
sub bsearch {
	my ($key, $list) = @_;
	my $max = @$list;
	my $min = 0;
	my $mid;
	
	while ($max - $min > 1) {
		$mid = int(($max + $min) / 2);
		my ($string) = split(/\t/, $$list[$mid]);
		chomp $string;
		if ($string eq $key) {
			return $mid;
		} elsif ($string lt $key) {
	    	$min = $mid;
		} else {
		    $max = $mid;
		}
	}
	
	return -1;
}

---)

先頭へ