亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP實現快速排序

2019-11-08 01:44:34
字體:
來源:轉載
供稿:網友

寫了三種php快速排示例: 第一種效率低但最簡單最容易理解, 第二個是算法導論上提供的單向一次遍歷找中值方法, 第三種是雙向遍歷找中值經典快排算法。 三組算法實現和比較如下:

方法一:該方法比較直觀,但損失了大量的空間為代價,使用了效率較低的merge函數。在三種方法中效率最低。最壞情況下算法退化為(O(n*n))

function quick_sort($array) { if(count($array) <= 1) { return $array; } $key = $array[0]; $rightArray = array(); $leftArray = array(); for($i = 1; $i < count($array); $i++) { if($array[$i] >= $key) { $rightArray[] = $array[$i]; } else { $leftArray[] = $array[$i]; } } $leftArray = quick_sort($leftArray); $rightArray = quick_sort($rightArray); return array_merge($leftArray, array($key), $rightArray);}

方法二:該算法來自算法導論,叫作Nico Lomuto方法(感興趣Google上有詳細說明)使用最經典的單方向一次遍歷找到中值。 但這種算法在最壞情況下(例如值相同的數組,需要n-1次劃分,每一次劃分需要O(n) 時間去掉一個元素)最壞情況下為O(n*n)

function quick_sort(&$array, $start, $end) { if ($start >= $end) return; $mid = $start; for ($i = $start + 1; $i <= $end; $i++) { if ($array[$i] < $array[$mid]) { $mid++; $tmp = $array[$i]; $array[$i] = $array[$mid]; $array[$mid] = $tmp; } } $tmp = $array[$start]; $array[$start] = $array[$mid]; $array[$mid] = $tmp; quick_sort($array, $start, $mid - 1); quick_sort($array, $mid + 1, $end);}

方法三:該方法基本上是教科書式的常見寫法,首先從左向右遍歷小于中間元素的跳過,同時從右向左遍歷遇到大的元素跳過,然后如果沒有交叉則交換兩邊值,繼續循環,直到找到中間點。 注意該方法在處理相同元素的時候,仍舊交換,這樣在最壞情況下也有O(nlogn)效率。但下面的函數中,如果將$array[$right] > $key 改成 $array[$right] >=$key 或將 $array[$left] < $key改成$array[$left] <= $key則最壞情況不但會墮落為O(n*n).而且除了每次比較的消耗外,還會產生n次交互的額外開銷。該題還有另外兩個考點,針對死記硬背的同學:

中間的兩個while可否互換。當然不能互換,因為對于快盤需要一個額外的空間保存初始的左值,這樣左右互換的時候,先用右邊覆蓋已經保存 為中值的左值,否則會出現問題。見這句$array[$left] = $array[$right];$array[$right] = $key; 該語句含義可否省略。該句不能省略,大家可以考慮一個極端情況比如兩個值的排序(5,2),逐步看下就明白了。function quick_sort_swap(&$array, $start, $end) { if($end <= $start) { return; } $key = $array[$start]; $left = $start; $right = $end; while($left < $right) { while($left < $right && $array[$right] > $key){ $right--; } $array[$left] = $array[$right]; while($left < $right && $array[$left] < $key){ $left++; } $array[$right] = $array[$left]; } $array[$right] = $key; quick_sort_swap($array, $start, $right - 1); quick_sort_swap($array, $right+1, $end);}

原文鏈接:php實現快速排序的三種方法分享


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久噜噜噜久久中文字免| 欧美国产日本在线| 欧美韩日一区二区| 久久久久久中文字幕| 精品国产视频在线| 5278欧美一区二区三区| 亚洲精品按摩视频| 久久影院模特热| 欧美成aaa人片在线观看蜜臀| 日韩精品在线免费观看视频| 亚洲精品美女在线| 日韩毛片中文字幕| 欧美一级大片在线免费观看| 黑人极品videos精品欧美裸| 国产一区二区三区视频在线观看| 欧美日韩亚洲精品内裤| 亚洲国产中文字幕久久网| 日韩成人免费视频| 美女视频黄免费的亚洲男人天堂| 精品成人av一区| 精品亚洲夜色av98在线观看| 日韩精品www| 2019av中文字幕| 91在线观看免费| 欧美在线www| zzijzzij亚洲日本成熟少妇| 96sao精品视频在线观看| 黑人巨大精品欧美一区二区免费| 亚洲精品中文字幕女同| 一区二区三区视频免费| 国产日本欧美视频| 亚洲护士老师的毛茸茸最新章节| 在线一区二区日韩| 国产精品无码专区在线观看| 91大神福利视频在线| 中文字幕亚洲综合| 黑人巨大精品欧美一区二区三区| 亚洲国产精品美女| 成人免费在线视频网址| 亚洲欧美综合精品久久成人| 亚洲日本欧美日韩高观看| 中文字幕欧美在线| 国产亚洲精品美女| 成人免费观看a| 一区二区三区无码高清视频| 亚洲国产欧美一区二区三区同亚洲| 国产成人综合精品在线| 欧美性受xxx| 久久色免费在线视频| 日本人成精品视频在线| 亚洲va码欧洲m码| 91香蕉嫩草神马影院在线观看| 亚洲精品视频中文字幕| 青青在线视频一区二区三区| 成人亲热视频网站| 超薄丝袜一区二区| 亚洲欧美在线免费观看| 456国产精品| 日韩亚洲国产中文字幕| 社区色欧美激情 | 欧美大片在线免费观看| 高潮白浆女日韩av免费看| 日韩禁在线播放| 国内精久久久久久久久久人| 九九精品在线播放| 国产精品狼人色视频一区| 国产精品久久77777| 精品五月天久久| 亚洲性日韩精品一区二区| 国产精品视频网站| 美女视频黄免费的亚洲男人天堂| 久久久女女女女999久久| 午夜免费在线观看精品视频| 亚洲自拍偷拍网址| 青青久久av北条麻妃黑人| 亚洲午夜精品久久久久久性色| 亚洲黄色av女优在线观看| 亚洲无限乱码一二三四麻| 日韩小视频在线观看| 日韩av在线一区二区| 亚洲人成77777在线观看网| 日韩av最新在线| 国产精品丝袜久久久久久不卡| 久久久亚洲影院你懂的| 日韩欧美亚洲国产一区| 国产成人亚洲综合91| 亚洲自拍偷拍色片视频| 欧美成人免费一级人片100| 日韩美女写真福利在线观看| 日韩国产欧美精品一区二区三区| 国产精品成人一区| 少妇av一区二区三区| 少妇精69xxtheporn| 91九色视频导航| 这里只有精品在线播放| 国产午夜精品免费一区二区三区| 亚洲欧美国产va在线影院| 亚洲系列中文字幕| 7777精品视频| 日韩精品黄色网| 夜夜嗨av一区二区三区免费区| 色狠狠av一区二区三区香蕉蜜桃| 日韩精品在线观看网站| 亚洲福利视频网| 亚洲人线精品午夜| 一区二区成人av| 夜夜嗨av色一区二区不卡| 久久夜精品va视频免费观看| 伊人久久久久久久久久| 精品人伦一区二区三区蜜桃免费| 亚洲精品999| www.xxxx精品| 欧美性视频网站| 精品高清一区二区三区| 亚洲最新av网址| 国产免费久久av| 欧美色xxxx| 国产成人97精品免费看片| 久久精品成人欧美大片古装| 欧美电影免费观看| 55夜色66夜色国产精品视频| 国产一区私人高清影院| 国产成人精品免高潮在线观看| 久久成年人视频| 日韩av在线导航| 欧洲精品毛片网站| 中文字幕亚洲情99在线| 国产精品女人网站| 成人亲热视频网站| 国产一区二区激情| 国产精品偷伦一区二区| 国产视频欧美视频| 欧美精品性视频| 国产精品96久久久久久又黄又硬| 欧美wwwwww| 日韩国产精品亚洲а∨天堂免| 久久久久久有精品国产| 日韩av电影手机在线观看| 亚洲欧美中文字幕在线一区| 夜色77av精品影院| 精品成人69xx.xyz| 国产精品大片wwwwww| 国产精品2018| 日韩精品日韩在线观看| 久久久久久久香蕉网| 亚洲精品suv精品一区二区| 欧美成人在线影院| 92国产精品久久久久首页| 国产精品久久久91| 7m精品福利视频导航| 久久精品国产久精国产一老狼| 国产精品久久久久久av| 亚洲美腿欧美激情另类| 欧美wwwwww| 在线精品91av| 日韩精品中文字幕在线| 久久综合亚洲社区| 亚洲精品免费av| 亚洲国产精品悠悠久久琪琪| 深夜精品寂寞黄网站在线观看| 国产97人人超碰caoprom| 精品综合久久久久久97| 久久在线免费视频| 成人激情综合网|