一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP 快速排序算法詳解

PHP 快速排序算法詳解

2020-08-06 16:07PHP教程網 PHP教程

其實快速排序之所以稱之快速,就是因為,冒泡排序是每次對比只交換相鄰的兩個值的位置,這樣每個值要移動到它最終的排序結果中所對應的位置,可能需要很多次位置的變化。但是快速排序可在一次劃分中,就確定你選定的那

概念

這里借用百度百科的一張圖來,非常形象:

PHP 快速排序算法詳解

快速排序算法是對冒泡算法的一個優化。他的思想是先對數組進行分割, 把大的元素數值放到一個臨時數組里,把小的元素數值放到另一個臨時數組里(這個分割的點可以是數組中的任意一個元素值,一般用第一個元素,即$array[0]),然后繼續把這兩個臨時數組重復上面拆分,最后把小的數組元素和大的數組元素合并起來。這里用到了遞歸的思想。

PHP實現

 

復制代碼 代碼如下:


/*
    快速排序
*/

 

function quickSort($array)
{
    if(!isset($array[1]))
        return $array;
    $mid = $array[0]; //獲取一個用于分割的關鍵字,一般是首個元素
    $leftArray = array();
    $rightArray = array();

    foreach($array as $v)
    {
        if($v > $mid)
            $rightArray[] = $v;  //把比$mid大的數放到一個數組里
        if($v < $mid)
            $leftArray[] = $v;   //把比$mid小的數放到另一個數組里
    }

    $leftArray = quickSort($leftArray); //把比較小的數組再一次進行分割
    $leftArray[] = $mid;        //把分割的元素加到小的數組后面,不能忘了它哦

    $rightArray = quickSort($rightArray);  //把比較大的數組再一次進行分割
    return array_merge($leftArray,$rightArray);  //組合兩個結果
}

 

與冒泡算法對比

這里我與之前寫的冒泡算法實現的排序做了個對比,可以看出這個算法比冒泡算法的效率要高很多。

 

復制代碼 代碼如下:


$a = array_rand(range(1,3000), 1500);  //甚至在冒泡算法超過1600個元素的時候會出現內存不足的提示,但這里為了測出兩個之間的差別大小, 就設置成了1500,保證冒泡算法也能執行完畢。
shuffle($a);  //獲取已經打亂了順序的數組
$t1 = microtime(true);
quickSort($a);  //快速排序
$t2 = microtime(true);
echo (($t2-$t1)*1000).'ms<br/>';

 

require('./maopao.php');  //這里引用的是我之前寫的冒泡算法排序
$t1 = microtime(true);
maoPao($a);   //冒泡
$t2 = microtime(true);
echo (($t2-$t1)*1000).'ms';

 

運行結果:

 

復制代碼 代碼如下:

12.10880279541ms
772.64094352722ms

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美帅老头oldmangay | 日本在线看 | 欧美在线视频一区在线观看 | 国产好深好硬好爽我还要视频 | juliaann丝袜精品系列 | 日本大尺度激情做爰叫床 | 美女脱了内裤打开腿让你桶爽 | 国产免费看片 | free性丰满hd性欧美人体 | 99年水嫩漂亮粉嫩在线播放 | 青草青青在线视频 | 国产精品久久久久久久久久久久 | youjizzxxx69日本| 精品无人乱码一区二区三区 | 天仙tv微福视频 | 91天堂在线视频 | 欧美日韩在线一区 | 456亚洲老头视频 | 韩国甜性涩爱免费观看 | 亚洲精品日韩专区在线观看 | 91香蕉国产在线观看免费永久 | 日本mv精品中文字幕 | 91精品免费观看老司机 | 欧美a级在线观看 | 亚洲人成网站在线观看90影院 | 国产永久一区二区三区 | 日本免费不卡在线一区二区三区 | www视频在线免费观看 | 国产成人免费高清激情明星 | h视频免费高清在线观看 | 福利国产片 | porno美国xxxx| 九九九九九九 | 网友自拍咪咪爱 | 国产精品青青在线观看香蕉 | 四虎在线精品观看免费 | 办公室强行丝袜秘书啪啪 | 无人视频在线观看完整版高清 | 国内精品久久久久香蕉 | 成年人在线视频观看 | 美女扒开尿口让男生添 漫画 |