$arr = array(
12,
45,
89,
76,
22,
11,
28,
112,
20,
,
23,
65,
65,
765,
6, 33,
553,
45,
423,
64,
;
/**
* 冒泡排序演算法,時間複雜度n2/2次
* 冒泡排序的基本概念是:依序比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:先比較第1個和第2個數,將小數放前,大數放後。
* 然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最 後。
* 在第二趟:仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後,一直比較到倒數第二個數
* (倒數第一的位置上已經是最大的),第二趟結束,在倒數第二個數的位置上得到一個新的最大數(其實在整個數列中是第二大的數)。如此下去,重複以上過 程,
* 直至最終完成排序。
*/
function maopao_sort($arr)
{
$count = count($arr);
$tmp; for ($j = 0; $j $j + 1]) {
$tmp = $arr[$j];
$arr[$j + 1] = $tmp;
}
$m ++;
}
}
print_r($arr)); sort($arr)
{
$count = count($arr );
$tmp;
$m = 0; // 用於計算執行多少次
for ($i = 0; $i ; for ($j = $i + 1; $j if ($arr[$p] > $arr[$j]) {
}
$m ++;
}
if ($p != $i) {
= $arr[$i];
$arr[$i ] = $tmp;
}
}
print_r($arr);
echo $m; ($arr) ;
$tmp;
$m = 0; // 用來計算執行多少次
for ($i = 1; $i
for ($j = $i - 1; $j >= 0; $j --) {
1] = $arr[ $j];
$arr[$j] = $tmp;
}
$m ++;
}
/ **
* 快速排序演算法,時間複雜度n2/2次
* 此方法的基本想法是:
* 1.先從數列中取出一個數字作為基準數。
* 2.分區過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。
* 3.再對左右區間重複第二步,直到各區間只有一個數。
*/
function Quick_sort($arr)
{
$count = count($arr);
if ($count $left_array = array();
$right_array = array();
) {
$left_array[] = $arr[$i];
} else {
}
$m ++;
}
$left_array =快速排序( $left_array);
$right_array = fast_sort($right_array);
return array_merge($left_array, array(
right $c (quick_sort($arr));
/ / / print_r(quickSort($arr));
function fastpaixu($arr)
{
$count = count($arr);
$arr[0]; // 取一個值,稍後用來比較;
$left_arr = array();
$right_arr = array();
for ($i = 1; $i if ($arr[$i] [] = $arr[$i];
}
}
$left_arr = Quickpaixu($left_arr); // 遞歸;
$right_arr = Quickpaixu($right_arr);
return array_merge($left_arr, array(
// 將左中右的數值合併成一份;
} // 以下是測試
// print_r(quickpaixu($arr));
?>
以上就介紹了簡單的排序演算法,包含排序演算法、簡單方面的內容,希望對PHP教學有興趣的朋友有幫助。