この記事では主に PHP クイック ソート アルゴリズムを紹介し、例の形式で原理、手順、関連する PHP 定義とクイック ソートの使用テクニックを分析します。この記事の例では、PHP クイック ソート アルゴリズムについて説明します。参考までに皆さんと共有してください。詳細は次のとおりです。
クイック ソート: 順序なし配列 $data で、比較値として任意の値を選択し、先頭の検索インデックスとして i、末尾として j を定義します。検索インデックス、
アルゴリズムステップ:(1) 初期化比較値
$value=$data[0]、$i =1
, $j=count($data)-1
(2) まず最後から検索して、
$value# より小さいですが、
$j-- より小さくない場合は、
$value# より小さい座標 が見つかるまで検索を続けます。 ## (3) ヘッダーの取得を開始します。
$data[$i]
が
より大きいかどうかを判断し、そうでない場合は $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 サイトの他の関連記事を参照してください。