国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP遞歸實現快速排序的方法示例

2024-05-05 00:01:28
字體:
來源:轉載
供稿:網友

本文實例講述了PHP遞歸實現快速排序的方法。分享給大家供大家參考,具體如下:

首先我們要理解一下快速排序的原理找到當前數組中的任意一個元素(一般選擇第一個元素),作為標準,新建兩個空數組,遍歷整個數組元素,如果遍歷到的元素比當前的元素要小,那么就放到左邊的數組,否則放到右面的數組,然后再對新數組進行同樣的操作。

不難發現,這里符合遞歸的原理,所以我們可以用遞歸來實現。

使用遞歸,則需要找到遞歸點和遞歸出口:

遞歸點:如果數組的元素大于1,就需要再進行分解,所以我們的遞歸點就是新構造的數組元素個數大于1

遞歸出口:我們什么時候不需要再對新數組不進行排序了呢?就是當數組元素個數變成1的時候,所以這就是我們的出口。

理解了原理,來看一下代碼實現~

<?php//快速排序//待排序數組$arr=array(6,3,8,6,4,2,9,5,1);//函數實現快速排序function quick_sort($arr){    //判斷參數是否是一個數組    if(!is_array($arr)) return false;    //遞歸出口:數組長度為1,直接返回數組    $length=count($arr);    if($length<=1) return $arr;    //數組元素有多個,則定義兩個空數組    $left=$right=array();    //使用for循環進行遍歷,把第一個元素當做比較的對象    for($i=1;$i<$length;$i++)    {      //判斷當前元素的大小      if($arr[$i]<$arr[0]){        $left[]=$arr[$i];      }else{        $right[]=$arr[$i];      }    }    //遞歸調用    $left=quick_sort($left);    $right=quick_sort($right);    //將所有的結果合并    return array_merge($left,array($arr[0]),$right);}//調用echo "<pre>";print_r(quick_sort($arr));

運行結果:

Array(  [0] => 1  [1] => 2  [2] => 3  [3] => 4  [4] => 5  [5] => 6  [6] => 6  [7] => 8  [8] => 9)

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 郯城县| 乌兰浩特市| 曲周县| 垣曲县| 大同市| 昭平县| 永川市| 福州市| 昌宁县| 封丘县| 阿合奇县| 开原市| 乐清市| 石家庄市| 大足县| 晋宁县| 麟游县| 冕宁县| 武宁县| 罗城| 成武县| 牙克石市| 望城县| 岳西县| 普兰县| 七台河市| 乡城县| 大关县| 荆州市| 洞口县| 娄底市| 巢湖市| 衢州市| 安泽县| 华坪县| 青州市| 周口市| 会泽县| 会泽县| 潮州市| 上蔡县|