ホームページ >バックエンド開発 >PHPチュートリアル >単純なソートアルゴリズム Java ソートアルゴリズム ソートアルゴリズムの概要 ヒープソートアルゴリズム
$arr = array(
12,
45,
89,
3,
24,
55,
223,
76,
22,
1 1,
28,
112,
20,
434,
23,
65,
65,
765,
6,
8,
23,
5,
33,
553,
4 5,
423,
64,
77,
84、
23
);
/**
* バブル ソート アルゴリズム、時間計算量は n2/2 倍
* バブル ソートの基本概念は次のとおりです: 2 つの隣接する数値を順番に比較し、小数を前に、大きな数値を後ろに置きます。つまり、最初のパスでは、まず 1 番目と 2 番目の数値を比較し、小数点を前に、大きな数値を後ろに置きます。
* 次に、2 番目の数字と 3 番目の数字を比較し、小数を前に、大きな数字を後ろに置き、最後の 2 つの数字を比較するまで同様に続け、小数を前に、大きな数字を後ろに置きます。この時点で最初の旅行は終了し、最大の数字が最後に配置されます。
* 2 番目のパスでも、最初の数値のペアから比較を開始します (2 番目の数値と 3 番目の数値の交換が原因で、最初の数値が 2 番目の数値より小さくなくなっている可能性があるため)、最初に 10 進数が配置され、大きな数値が配置された後、最後から 2 番目の数値
* まで比較が継続されます (最初から最後までの位置はすでに最大です)。2 回目のパスの終了時に、新しい最大数値が取得されます。最後から 2 番目の位置 (実際、全体ではシーケンス内で 2 番目に大きい数値です)。このように続けて、最終的に並べ替えが完了するまで、上記のプロセスを繰り返します
*。
*/
function maopao_sort($arr)
{
$count = count($arr);
$tmp;
$m = 0; // ($i = 0; の実行回数
を計算するために使用されます) $i <$count - 1; $i ++) {
for ($j = 0; $j <$count - 1 - $i; $j ++) {
if ($arr[$j] > $arr[$j + 1]) {
}
$count = count ($arr);
$tmp;
$m = 0; // 実行回数
を計算するために使用されます ($ i = 0; $i $p = $i;
for ($j = $count; $j ++)
$j;
] = $arr[$i];
$arr[$i] = $tmp;
print_r( = count($arr);
$tmp;
$m = 0; // 計算に使用されます実行された回数
for ($i = 1; $i $tmp = $arr[$i];
for ($j = $i - 1; $j >= 0; $j --) {
$j + 1] = $arr[$j];
Echo $m;
}
/**
* クイックソートアルゴリズム、時間計算量 n2/ 2回
* この方法の基本的な考え方は次のとおりです:
* 1. まず、シーケンスから基数として数値を取得します。
*2.分割プロセス中に、この数値より大きいすべての数値が右側に配置され、この数値以下のすべての数値が左側に配置されます。
*3.各間隔に数値が 1 つだけになるまで、左右の間隔に対して 2 番目のステップを繰り返します。
*/
function Quick_sort($arr)
{
$count = count($arr);
if ($count return $arr;
}
$tmp = $arr[0];
$left_array = array();
$right_array = array();
for ($i = 1; $i < $count; $i ++) {
if ($arr[$i] <= $tmp) {
$left_array[] = $arr[$i];
} else {
$right_array[] = $arr[$i];
}
$m ++;
}
$left_array = Quick_sort ($left_array);
$right_array = Quick_sort($right_array);
return array_merge($left_array, array(
$tmp
), $right_array);
}
// print_r(quick_sort($arr));
/ / // print_r(quickSort($arr));
function Quickpaixu($arr)
{
$count = count($arr);
if ($count <= 1) {
return $arr;
}
$key = $arr[0]; // 取一个值,稍後用来比较;
$left_arr = array();
$right_arr = array();
for ($i = 1; $i < $count; $i ++) { / / 比$key大的放在右边,小的放在左边;
if ($arr[$i] <= $key) {
$left_arr[] = $arr[$i];
} else {
$right_arr[] = $arr[$i];
}
}
$left_arr = Quickpaixu($left_arr); // 进行递归;
$right_arr = Quickpaixu($right_arr);
return array_merge($left_arr, array(
$key
), $right_arr); // 将左中右の組み合わせは数組になります;
} // 以下は测试
// print_r(quickpaixu($arr));
?>
以上は、順序計算法、具体的な内容を含む、単純な順序計算法について説明しました。PHP 教則に関心のある友人の助けになることを望みます。