PHP インデックス配列。配列内の値は 1 から 100 までの整数 (非反復) であり、値は断続的になる可能性があります。つまり、7、9 は存在するが、8 は存在しない可能性があります。そして順序が乱れている、つまり1から100まで整っていません
$a=50 と仮定すると、==$a または $a に最も近い 2 つの値を素早く取り出すにはどうすればよいでしょうか?
ちなみに、配列内の値は必ずしも$aと一致するとは限りません
PHP インデックス配列。配列内の値は 1 から 100 までの整数 (非反復) であり、値は断続的になる可能性があります。つまり、7、9 は存在するが、8 は存在しない可能性があります。そして順序が乱れている、つまり1から100まで整っていません
$a=50 と仮定すると、==$a または $a に最も近い 2 つの値を素早く取り出すにはどうすればよいでしょうか?
ちなみに、配列内の値は必ずしも$aと一致するとは限りません
array_search
— 配列内の指定された値を検索し、成功した場合は対応するキーを返します
キーの名前を取得します、$arr[$key-1]
, $arr[$key+1]
それだけです
上記は非常に単純ですが、番号が見つからない場合は、元の配列の順序がバラバラなので、必ずしも上位と下位が最も近いものを見つけます。 もちろん、二分探索も同様です。アイデアとして、私自身のアルゴリズムのアイデアを提供します。私のアイデアは、まずバレルソート (私が現在知っている正の整数をソートする最速の方法) を使用することです。 リーリー
これがどれほど効率的かわかりません
リーリー
変更なしの静的クエリ
要件と目的:
配列 [5,9,3,8,7,10,12] があるとします追加および削除操作を伴う動的クエリ (大きな数)12 に最も近い座標を尋ねると、6 を返します
リーリー
2 に最も近い座標を尋ねると、2 を返します
非繰り返しを追加します数値 15
反復しない数値 18 を追加します
反復しない数値 16 を追加します
反復しない数値 13 を追加します
13 に最も近い座標を求めると、10 を返します
17 に最も近い座標を求めると、9 を返します