ホームページ  >  記事  >  バックエンド開発  >  PHPソートアルゴリズムシリーズの直接選択ソートの詳細説明

PHPソートアルゴリズムシリーズの直接選択ソートの詳細説明

jacklove
jackloveオリジナル
2018-07-03 17:53:011319ブラウズ

この記事では、主に PHP ソート アルゴリズム シリーズの直接選択ソートの関連情報を詳しく紹介します。一定の参考価値があります。興味のある方は、

直接選択ソート##を参照してください。

#ストレート選択ソートの基本的な考え方は、最初に R[0]~R[n-1] から最小値を選択し、それを R[0] と交換することです。回目、R[1]~R[n-1]から最小値を選択、R[1]に置き換え、…、i回目、R[i-1]~から最小値を選択R[n-1]の値、R[i-1]と交換、……、n-1回目、R[n-2]~R[n-1]から最小値を選択、交換R[n-2] を使用し、合計 n-1 回渡し、ソート コードによって小さいものから大きいものへと並べられた順序付けされたシーケンスを取得します。

選択ソートの主な利点は、データの移動に関連しています。要素が正しい最終位置にある場合、その要素は移動されません。選択ソートで 1 組の要素が交換されるたびに、そのうちの少なくとも 1 つが最終位置に移動するため、n 個の要素のリストをソートするには最大で n-1 回の交換が必要になります。要素の移動を完全に交換に依存するすべてのソート方法の中で、選択ソートは非常に優れた方法です。

原則

まず、ソートされていないシーケンス内で最小の (大きな) 要素を見つけ、それをソートされたシーケンスの開始位置に格納し、次に残りの要素から選択します。ソートされていない要素。引き続き最小 (最大) 要素を検索し、ソートされたシーケンスの最後に配置します。すべての要素がソートされるまで続きます。

配列が [0...n-1] であるとします。

1. 最初、配列はすべて順序付けされておらず、領域は a[0..n-1] です。 i=0 とする
2. 順序付けされていない領域 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] は最小値です。次の値と a[i] を比較し、a[i] より小さければ a[i] と位置を入れ替えます。$i

[5,89 ,53,98,25,37,92,12]

最初に i=1;a[i] を最小値として取り、それが a より小さい場合は後続の値を a[i] と比較します。 [i] small、次に 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 中国語 Web サイトをサポートしてくれることを願っています。

興味があるかもしれない記事:

PHP ソート アルゴリズムの挿入ソートの詳細説明シリーズ

##バケットソートアルゴリズムの PHP 実装の説明


##Laravel サービスプロバイダーで遅延読み込みを開発および設定するときに発生する問題の詳細な説明


##

以上がPHPソートアルゴリズムシリーズの直接選択ソートの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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