冒泡演算法和快速排序演算法實現和比較

2022-05-13 14:19:47 字數 1361 閱讀 8366

<?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個數,就交換位置,依次與這些數...