ホームページ  >  記事  >  バックエンド開発  >  PHP スキル: PHP クイック ソート アルゴリズムのサンプル分析

PHP スキル: PHP クイック ソート アルゴリズムのサンプル分析

无忌哥哥
无忌哥哥オリジナル
2018-07-12 14:17:111399ブラウズ

この記事では主に PHP クイック ソート アルゴリズムを紹介し、例の形式で原理、手順、関連する PHP 定義とクイック ソートの使用テクニックを分析します。この記事の例では、PHP クイック ソート アルゴリズムについて説明します。参考までに皆さんと共有してください。詳細は次のとおりです。

クイック ソート: 順序なし配列 $data で、比較値として任意の値を選択し、先頭の検索インデックスとして i、末尾として j を定義します。検索インデックス、

アルゴリズムステップ:

(1) 初期化比較値

$value=$data[0]

$i =1, $j=count($data)-1 (2) まず最後から検索して、

$data[$j]## かどうかを判断します。 # は

$value# より小さいですが、$j-- より小さくない場合は、$value# より小さい座標 が見つかるまで検索を続けます。 ## (3) ヘッダーの取得を開始します。$data[$i]

$value

より大きいかどうかを判断し、そうでない場合は $i 、取得を続行します。比率#が見つかるまで ##$value大きな座標# (4) このとき、$data[$j]と##の値は#$data[$i] が交換されます。つまり、$value

より大きいものを右に、

$value より小さいものを左に置きます。 (5) $i==$j になるまで 3 と 4 を繰り返します (6) このとき、$value

より大きいものを右側に配置し、

$value より小さいものを右側に配置し、左側の中央の座標位置を $i

と決定し、中央値は

$value であり、$data[$i] の値は、data[0]$ 値交換と比較されます。これは、中間値が$value$value を配列 の中央の座標に移動する必要があります。 (7) 配列 順序のない配列を左右の 2 つに分割し、その後、配列の長さが 1 になるまで 1 ~ 6 を再帰的に実行します。ヒント: クイック ソートの中国語の定義は、Baidu コード:

# で明確になります。

##
<?php
header("Content-type: text/html; charset=utf-8");
function quickSort($data, $startIndex, $endIndex){
 if($startIndex < $endIndex){
  $value = $data[$startIndex]; // 对比值
  $startT = $startIndex + 1;
  $endT = $endIndex;
  while ($startT != $endT) {
   // 找到比对比值小的坐标
   while ($data[$endT] > $value && $endT > $startT){
    $endT--;
   }
   // 找到比对比值大的左边
   while ($data[$startT] < $value && $startT < $endT){
    $startT++;
   }
   if($endT > $startT){
    $temp =$data[$startT];
    $data[$startT] = $data[$endT];
    $data[$endT] = $temp;
   }
  }
  // 防止数组已经排序好的情况
  if($data[$startT] < $value){
   $data[$startIndex] = $data[$startT];
   $data[$startT] = $value;
  }
  $data = quickSort($data, $startIndex, $startT - 1);
  $data = quickSort($data, $startT + 1, $endIndex);
  return $data;
 }else{
  return $data;
 }
}
$data = array(10, 5, 30, 22, 1, 42, 14, 34, 8, 13, 28, 36, 7);
$data = quickSort($data, 0, count($data) - 1);
var_dump($data);

##実行結果:

array(13) {
  [0]=>
  int(1)
  [1]=>
  int(5)
  [2]=>
  int(7)
  [3]=>
  int(8)
  [4]=>
  int(10)
  [5]=>
  int(13)
  [6]=>
  int(14)
  [7]=>
  int(22)
  [8]=>
  int(28)
  [9]=>
  int(30)
  [10]=>
  int(34)
  [11]=>
  int(36)
  [12]=>
  int(42)
}

以上がPHP スキル: PHP クイック ソート アルゴリズムのサンプル分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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