ホームページ > バックエンド開発 > PHPチュートリアル > PHPで実装された二分探索アルゴリズムの分析例

PHPで実装された二分探索アルゴリズムの分析例

小云云
リリース: 2023-03-18 06:14:01
オリジナル
1639 人が閲覧しました

この記事では、PHP で実装される二分探索アルゴリズムの原理と、ループや再帰などの実装テクニックをサンプル形式で紹介します。 。

二分探索法では、配列が順序付けられた配列である必要があります

配列が増加する配列であると仮定すると、まず配列の中間位置を見つける必要があります。

1 つ。中間位置を知るには、開始位置と終了位置を知ってから、中間位置の値を取得してこの値と比較する必要があります。
2つ。中央の値が指定した値より大きい場合は、この時点で値が中央より前にあることを意味します。中央より前なので、変更する必要がある値は です。このとき、終了位置の値は「We're in the middle at this point」となるはずです。
3つ。一方、中間の値が与えた値より小さい場合は、与えられた値が中間の位置より後であることを意味します。このとき、後半の値は であるため、再度 2 つに分割する必要があります。中間値の後なので、変更する必要がある値は開始位置の値です。指定された値が見つかるまで、この時点の開始位置の値が中間位置になります。
4つ。または、中間値が最初の開始位置または終了位置と等しい場合 (この場合、指定された値が見つかりません)、コードを使用して実装しましょう~


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

//循环实现

function getValue($num,$arr)

{

//查找数组的中间位置

$length=count($arr);

$start=0;

$end=$length;

$middle=floor(($start+$end)/2);

//循环判断

while($start>$end-1)

{

if($arr[middle]==$num)

{

return middle+1;

}elseif($arr[middle]<$num)

{

//如果当前要查找的值比当前数组的中间值还要打,那么意味着该值在数组的后半段

//所以起始位置变成当前的middle的值,end位置不变。

$start=$middle;

$middle=floor(($start+$end)/2);

}else{

//反之

$end=$middle;

$middle=floor(($start+$end)/2);

}}

return false;

}

ログイン後にコピー
ログイン後にコピー

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

//循环实现

function getValue($num,$arr)

{

//查找数组的中间位置

$length=count($arr);

$start=0;

$end=$length;

$middle=floor(($start+$end)/2);

//循环判断

while($start>$end-1)

{

if($arr[middle]==$num)

{

return middle+1;

}elseif($arr[middle]<$num)

{

//如果当前要查找的值比当前数组的中间值还要打,那么意味着该值在数组的后半段

//所以起始位置变成当前的middle的值,end位置不变。

$start=$middle;

$middle=floor(($start+$end)/2);

}else{

//反之

$end=$middle;

$middle=floor(($start+$end)/2);

}}

return false;

}

ログイン後にコピー
ログイン後にコピー

関連する推奨事項:

Python二分探索を高速に実装するためのソート例の詳細説明

php 再帰的実装と非再帰実装の二分探索サンプルコード

PHP二分探索の詳細説明

以上がPHPで実装された二分探索アルゴリズムの分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート