この記事では主に PHP ソート アルゴリズム シリーズの関連情報を詳しく紹介します。興味のある方は参考にしていただければ幸いです。
ダイレクト選択ソート
ストレート選択ソートの基本的な考え方は次のとおりです: 最初に R[0]~R[n-1] から最小値を選択し、それを R[0] と交換し、 R[1]~R[n-1]の最小値を2回選択し、R[1]に置き換えて……、R[i-1]~R[n-1]の最小値を選択i回目、R[i-1]と交換、....、R[n-2]~R[n-1]から最小値を選択、n-1回目、R[と交換n-2] を実行し、合計 -1 回 n を渡し、ソート コードによって小さいものから大きいものへと並べられた順序付けされたシーケンスを取得します · 選択ソートの主な利点は、データの移動に関連しています。要素が正しい最終位置にある場合、その要素は移動されません。選択ソートで 1 組の要素が交換されるたびに、そのうちの少なくとも 1 つが最終位置に移動するため、n 個の要素のリストをソートするには最大で n-1 回の交換が必要になります。要素の移動を完全に交換に依存するすべてのソート方法の中で、選択ソートは非常に優れた方法です。
原則まず、ソートされていないシーケンスの中で最小の(大きな)要素を見つけて、それをソートされたシーケンスの開始位置に格納します。次に、ソートされていない残りの要素から最小の(大きな)要素を探し続けます。すでにソートされたシーケンスに配置します。すべての要素がソートされるまで続きます。
例配列が a[0...n-1] であると仮定します。
1. 最初、配列はすべて順序付けされておらず、領域は a[0..n-1] です。 i=02 として、順序付けされていない領域 a[i...n-1] 内の最小の要素を選択し、それを a[i] と交換します。交換後、a[0...i] は順序付けられた領域を形成します。
3.i++ を実行し、i==n-1 になるまで 2 番目のステップを繰り返します。並べ替えが完了しました。
配列[53,89,12,98,25,37,92,5]をソートします
まず、i=0;a[i]を最小値として取り、以下の値を比較しますCompare [i] で a[i] より小さい場合、a[i] と位置を交換 $i++
[5,89,53,98,25,37,92,12]
まず i=1 を取得します。a[i] は最小値です。次の値を a[i] と比較し、a[i] より小さい場合は、位置を a[i] と交換します。 $i++
[5 ,12,89,98, 53,37,92,25]
上記の手順を繰り返します
PHP コードの実装
function select_sort($arr){ $length=count($arr); for ($i=0; $i <$length-1 ; $i++) { for ($j=$i+1,$min=$i; $j <$length ; $j++) { if ($arr[$min]>$arr[$j]) { $min=$j; } } $temp=$arr[$i]; $arr[$i]=$arr[$min]; $arr[$min]=$temp; } return $arr; }
以上がPHPソートアルゴリズムシリーズの直接選択ソートの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。