ホームページ >バックエンド開発 >PHPチュートリアル >配列ソートを実装するためのPHP選択ソート方法の例分析_PHPチュートリアル

配列ソートを実装するためのPHP選択ソート方法の例分析_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:04:08868ブラウズ

配列ソートを実装するためのPHP選択ソートメソッドの分析例

この記事では主に、配列ソートを実装するためのPHP選択ソートメソッドの方法を紹介します。サンプルでは、​​選択ソートの原理と具体的な実装手順を分析します。友達が必要です

この記事では、PHP の選択ソートメソッドを使用して配列ソートを実装する方法を分析します。皆さんの参考に共有してください。具体的な分析は次のとおりです:

選択ソート方法の基本的な考え方: たとえば、大きいものから小さいものへとソートされた配列 $arr = array(2,6,3,9) があるとします。

最初の大きなループ:まず$arr[0]が最大値であると仮定し、それをそれぞれ$arr[1]〜$arr[3]と比較し、それが大きい場合は交換する処理。は次のとおりです (2 ,6,3,9)---2 と 6 の比--->(6,2,3,9)---6 と 3 の比--->( 6,2,3,9)- --6 と 9 の比率 --->(9,2,3,6)。ここの添字も変更する必要があることに注意してください。

2 番目の大きなループ: $arr[1] が最大であると仮定し ($arr[0] は除外)、それを $arr[2]~$arr[3] とそれぞれ比較します。プロセスは次のようになります (9,2, 3,6 )----2 と 3 の比率 --->(9,3,2,6)---3 と 6 の比率 --->(9,6,2,3)。

3 番目の大きなループ: $arr[2] が最大であると仮定し、$arr[3] と比較します。プロセスは次のようになります (9,6,2,3)---2 と 3 の比率--- >(9, 6,3,2)

同様にN-1大サイクル後もアレンジ可能です

PHPコードは次のとおりです。これも関数でカプセル化されています

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

関数 selectSort(&$arr){

for($i=0;$i

$max = $arr[$i];

for($j=$i+1;$j

if($max<$arr[$j]){

$max = $arr[$j];

$arr[$j] = $arr[$i];

$arr[$i] = $max;

}

}

}

$arr を返す;

}

$myarr = 配列(2,6,3,9);

selectSort($myarr);

エコー「

」;

print_r($myarr);

?>

コード分析:

最初の大きなサイクル:

$i=0 配列(2,6,3,9)
$j=1、2と6の比率を実行すると、$arr[0]=6、$arr[1]=2、$max=6、つまり(6,2,3,9)になります
$j=2、3と6の比率を実行: 実行しない
$j=3、9と6の比率を実行すると、$arr[0]=9、$arr[3]=6、$max=9となり、(9,2,3,6)になります

2 番目の大きなサイクル:

$i=1,$max=$arr[1]=2, 配列 (9,2,3,6)
$j=2、3と2の比率を実行すると、$arr[1]=3、$arr[2]=2、$max=3となり、(9,3,2,6)になります
$j=3、6と3の比率を実行すると、$arr[1]=6、$arr[3]=3、$max=6となり、(9,6,2,3)になります

3 番目のサイクル:

$i=2,$max=$arr[2]=2, 配列 (9,6,2,3)
$j=3、3と2の比率を実行すると、$max[2]=3、$arr[3]=2、$max=3となり、(9,6,3,2)になります

この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/966910.html技術記事配列ソートを実装するための PHP 選択ソート方法の例の分析 この記事では、主に配列ソートを実装するための PHP 選択ソート方法を紹介し、例では選択ソートの原理と具体的な実装手順を分析します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。