ホームページ >バックエンド開発 >PHPチュートリアル >javascript - キー名と配列 b のキー名の間の量 a のサイズをすばやく見つける方法

javascript - キー名と配列 b のキー名の間の量 a のサイズをすばやく見つける方法

WBOY
WBOYオリジナル
2016-07-06 13:51:57907ブラウズ

変数 a = 8 および配列 b = array(1,3,5,7,8.9,9,11.3);

配列の長さが不明、変数の値が不明、配列のキー値が小さいものから大きいものまで並べられていると仮定します
配列 b のキー名とキー名の間の数量 a のサイズをすばやく見つける方法

例: a=8、b[4]とb[5]の間

返信内容:

変数 a = 8 および配列 b = array(1,3,5,7,8.9,9,11.3);

配列の長さが不明、変数の値が不明、配列のキー値が小さいものから大きいものまで並べられていると仮定します
配列 b のキー名とキー名の間の数量 a のサイズをすばやく見つける方法

例: a=8、b[4]とb[5]の間

長さは不明です...ありそうにありません...単に b.length ではないでしょうか...
二進除算以外にこの種のクエリをクエリするより良い方法はありますか...

または、クラスを自分でカプセル化し、配列の作成時にマッピングを実行し、サイズに応じてデータをグループ化することもできます。これにより、速度が大幅に向上します。
たとえば、簡単にするために、次のように整数でグループ化します。

リーリー

配列は同じままで、整数セグメントの開始添え字を表すハッシュを追加するだけです。たとえば、数値 8.5 をクエリする場合は、2 つの添え字間のデータをクエリするだけで済みます。 2 つのハッシュが空の場合は、値が見つかるまで前後に検索します。データがまばらすぎる場合は、このハッシュに対して別のハッシュを作成し、有効な整数セグメントを記録できます。いずれにせよ、これは単なる時間のスペースです。 this.hash[Math.floor(8.5)]this.hash[Math.floor(8.5) + 1]

明らかに二分探索を使用しています

実装方法:

リーリー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。