<?php
//要進行排序的陣列
$example = array(7,5,6,9,3,4,2,1,7,10,15,12,2,32,1,2,13,123,2,2,546,53,4,2,2,43,4,54,3,43,5,345,45,3,3,243,21,44,124,2,4,32432);
/*** 冒泡演算法
* 演算法思路是將每個相鄰的元素進行比較,然後根據值的大小判斷是否進行位置互換
* 演算法複雜度o(n^2)
* @param $sort desc || asc
*/function maopao($example,$sort)
if($sort == "asc" && $example[$a] < $example[$a-1])}}
return $example;
}/**
* 快速排序法
* 演算法思路是將隨意挑選其中乙個元素,大於/小於該元素的元素 靠左/右(desc/asc)
* 然後再將左右兩個元素進行相同規則的遞迴之後,最後合併陣列
* 演算法複雜度o(<=n)
*/function fastsort($example,$sort)else if($example[$i] < $flags)
}if($sort == "asc")else if($example[$i] > $flags)}}
if(!empty($left))
$left = fastsort($left,$sort);
if(!empty($right))
$right = fastsort($right,$sort);
//返回合併後的陣列
return array_merge($left,array($flags),$right);
}//設定最大執行時間
set_time_limit(0);
//函式巢狀呼叫次數設定無限次
ini_set("xdebug.max_nesting_level",0);
$i=0;
while($i < 1000)
$start = microtime(true);
$ret = fastsort($example,"desc");
print_r("快速排序法,耗時:");
echo (microtime(true) - $start);
$start = microtime(true);
$ret = maopao($example,"desc");
print_r("氣泡排序法,耗時:");
echo (microtime(true) - $start);
同伺服器下經過1000個陣列量進行比較,快速排序法是冒泡法速度的7倍
氣泡排序和快速排序演算法
氣泡排序 原理 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。實現 public...
php排序演算法 氣泡排序和快速排序
總是對這兩種排序特別迷糊,今天趁活不多,認真看了下,也算對自己有個交代吧 第一 氣泡排序 預設從小到大排序 若從小到大則第二個引數為true function bubbling sort arr,state false else return arr 上午寫了冒泡法,整體思路還是很清晰的,但是到快速...
演算法 PHP實現氣泡排序和快速排序 防遺忘
有沒有這樣的感覺,排序演算法雖然簡單,但是沒看過一次,一會就又忘了,所以有必要 自己使用實際的 執行實現,才記憶牢固,為此mark 需求 將陣列中元素,從大到小排列 a array 11,22,44,66,99,88 1.氣泡排序 將第1個數與第2個數,比較如果小於第2個數,就交換位置,依次與這些數...