主頁(yè) > 知識(shí)庫(kù) > PHP快速排序算法實(shí)現(xiàn)的原理及代碼詳解

PHP快速排序算法實(shí)現(xiàn)的原理及代碼詳解

熱門(mén)標(biāo)簽:抖音有個(gè)地圖標(biāo)注是什么意思 西區(qū)企業(yè)怎么做地圖標(biāo)注入駐 保定crm外呼系統(tǒng)運(yùn)營(yíng)商 地下城堡2圖九地圖標(biāo)注 智能電話(huà)機(jī)器人排名前十名南京 阿里云400電話(huà)申請(qǐng)加工單 海南人工外呼系統(tǒng)有效果嗎 九江外呼系統(tǒng) 七魚(yú)外呼系統(tǒng)停用嗎

算法原理

下列動(dòng)圖來(lái)自五分鐘學(xué)算法,演示了快速排序算法的原理和步驟。

步驟:

從數(shù)組中選個(gè)基準(zhǔn)值

將數(shù)組中大于基準(zhǔn)值的放同一邊、小于基準(zhǔn)值的放另一邊,基準(zhǔn)值位于中間位置

遞歸的對(duì)分列兩邊的數(shù)組再排序

代碼實(shí)現(xiàn)

function quickSort($arr)

{

 $len = count($arr);

 if ($len = 1) {

  return $arr;

 }

 

 $v = $arr[0];

 $low = $up = array();

 for ($i = 1; $i  $len; ++$i) {

  if ($arr[$i] > $v) {

   $up[] = $arr[$i];

  } else {

   $low[] = $arr[$i];

  }

 }

 $low = quickSort($low);

 $up = quickSort($up);

 

 return array_merge($low, array($v), $up);

}

測(cè)試代碼:

$startTime = microtime(1);

 

$arr = range(1, 10);

shuffle($arr);

 

echo "before sort: ", implode(', ', $arr), "\n";

$sortArr = quickSort($arr);

echo "after sort: ", implode(', ', $sortArr), "\n";

 

echo "use time: ", microtime(1) - $startTime, "s\n";

測(cè)試結(jié)果:

before sort: 1, 7, 10, 9, 6, 3, 2, 5, 4, 8

after sort: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

use time: 0.0009009838104248s

時(shí)間復(fù)雜度

快速排序的時(shí)間復(fù)雜度在最壞情況下是O(N2),平均的時(shí)間復(fù)雜度是O(N*lgN)。

這句話(huà)很好理解:假設(shè)被排序的數(shù)列中有N個(gè)數(shù)。遍歷一次的時(shí)間復(fù)雜度是O(N),需要遍歷多少次呢?至少lg(N+1)次,最多N次。

1) 為什么最少是lg(N+1)次?快速排序是采用的分治法進(jìn)行遍歷的,我們將它看作一棵二叉樹(shù),它需要遍歷的次數(shù)就是二叉樹(shù)的深度,而根據(jù)完全二叉樹(shù)的定義,它的深度至少是lg(N+1)。因此,快速排序的遍歷次數(shù)最少是lg(N+1)次。

2) 為什么最多是N次?這個(gè)應(yīng)該非常簡(jiǎn)單,還是將快速排序看作一棵二叉樹(shù),它的深度最大是N。因此,快讀排序的遍歷次數(shù)最多是N次。

您可能感興趣的文章:
  • PHP快速排序算法實(shí)例分析
  • PHP四種排序算法實(shí)現(xiàn)及效率分析【冒泡排序,插入排序,選擇排序和快速排序】
  • PHP排序算法之快速排序(Quick Sort)及其優(yōu)化算法詳解
  • PHP遞歸實(shí)現(xiàn)快速排序的方法示例
  • php 二維數(shù)組快速排序算法的實(shí)現(xiàn)代碼
  • PHP常用排序算法實(shí)例小結(jié)【基本排序,冒泡排序,快速排序,插入排序】
  • PHP快速排序quicksort實(shí)例詳解

標(biāo)簽:遼陽(yáng) 九江 韶關(guān) 昭通 十堰 梅河口 涼山 甘肅

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP快速排序算法實(shí)現(xiàn)的原理及代碼詳解》,本文關(guān)鍵詞  PHP,快速,排序,算法,實(shí)現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP快速排序算法實(shí)現(xiàn)的原理及代碼詳解》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于PHP快速排序算法實(shí)現(xiàn)的原理及代碼詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章