0
私はバイナリサーチをjavascriptでパターンマッチングで試しています。しかし、多くの場合、問題はそれが失敗することです。パターンマッチングjavascriptでの検索
私はこのコードを試しました。
function binarySearch(ar, el, compare_fn) {
var m = 0;
var n = ar.length - 1;
while (m <= n) {
var k = parseInt((n + m)/2);
var cmp = compare_fn(el, ar[k]);
if (cmp > 0) {
m = k + 1;
console.log(cmp,m,ar[m],k)
} else if(cmp < 0) {
n = k - 1;
console.log(cmp,n,ar[n],k)
} else {
return k;
}
}
return -m - 1;
}
function compare_number(a, b) {
var regExp = new RegExp(a, 'gi');
var match= (regExp.test(b)?0:1);
if(match){
match=a.localeCompare(b);
}
return(match);
}
new function test() {
var ar = ["job0000ya","job0002","job003","hello","myui",];
var n = binarySearch(ar, "ya", compare_number);
console.log([n]);
}();
しかし、この特定のケースでは失敗しているようです。私はそれを可能にすることができます。
ところで、 'new'が始まる生命維持のためのお勧めのキーワードではありません。 'void 'を使うのが良い。これは式を強制的に評価します。 –
バイナリソートでソートされたデータと小/等/より大きな値を返す関数が必要なので、この場合は検索が機能しない可能性がありますが、正規表現ではなく文字列の内部では機能しません2つの文字列の比較と、文字列が最初に来るかどうかを見分けることができません。 –
どのような提案を私はこれを達成することができますか? –