ホームページ  >  記事  >  バックエンド開発  >  PHPの単純な選択ソートアルゴリズムの学習

PHPの単純な選択ソートアルゴリズムの学習

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

この記事では、主に PHP の単純選択ソート アルゴリズムを詳しく紹介します。これには一定の参考値があります。興味のある友人は参照してください。

この記事の例は、あなたと共有されます。PHP の特定のコード単純な選択ソートは参考までに具体的な内容は次のとおりです

基本的な考え方:

キーワード間の n - i の比較を通じて、n - でレコードを選択しますi 1 個のレコードの中から最小のキーワードを取り出して、i (1

アルゴリズムの実装:

<?php

//简单选择排序

//交换函数
function swap(array &$arr,$a,$b){
  $temp = $arr[$a];
  $arr[$a] = $arr[$b];
  $arr[$b] = $temp;
}
//简单选择排序算法
function SelectSort(array &$arr){
  $count = count($arr);
  for($i = 0;$i < $count - 1;$i ++){
    //记录第$i个元素后的所有元素最小值下标
    $min = $i;
    for($j = $i + 1;$j < $count;$j ++){
      if($arr[$j] < $arr[$min]){
        $min = $j;
      }
    }

    if($min != $i){
      swap($arr,$min,$i);
    }
  }
}
$arr = array(9,1,5,8,3,7,4,6,2);
SelectSort($arr);
var_dump($arr);

##複雑さの分析:

シンプルな選択ソートプロセスにより、移動されるレコードが少なくなります。最良の場合、つまり、並べ替えられるレコードの初期状態はすでに正の順序になっており、レコードを移動する必要はありません。

最悪の場合、つまり、ソート対象のレコードの初期状態では、最初のレコードが最も大きく、後続のレコードが昇順に配置され、ソートする必要があるレコードの数が減ります。 move は最大 3 (n-1) です。単純選択ソート時に必要な比較回数は、初期状態でのソート対象のレコード列の配置とは関係ありません。 i=1 の場合は n-1 回の比較が必要、i=2 の場合は n-2 回の比較が必要、というように、必要な比較の合計数は (n-1) (n-2) ... 2 1 となります。 =n(n-1)/2、つまり、比較演算の時間計算量は O(n^2)、移動演算の時間計算量は O(n) です。

単純な選択ソートは不安定なソートです。

このブログは「Dahua Data Structure」から参照されています。将来の参考のためにここに記録されているだけです。批判しないでください。

以上がこの記事の全内容です、皆様の学習に少しでもお役に立てれば幸いです、またphp中国語サイトも応援していただければ幸いです。

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

WeChat Tiaoyitiao PHP コード実装の詳細な説明


# #WeChatのMomentsへの共有とphpで実装された共有機能の数の記録の説明


#PHP解析XML形式データツールクラス例の説明


##

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

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