您好,登錄后才能下訂單哦!
本篇內容主要講解“PHP數組如何運用快速排序”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“PHP數組如何運用快速排序”吧!
快速排序:
快遠排序(Quicksort)是對冒泡排序的一種改進。通過一-趟排序將要排序的數據分割成獨立的兩部分,其中-一部分的所有數據都批另外-部分的所有數據都要小,然后再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序列。
設要排序的數組是.....N-1]首先任意選取一一個數據(通常選用數組的第一個數)作為關鍵數據,然后將所有比它小的數都放到它前面,所有比它大的數都放到它后面,這個過程稱為- -趟快速排序。值得注意的是,快速排序不是一-種穩定的排序算法,也就是說,多個相同的值的相對位置也許會在算法結束時產生變動。
我們以代碼為例:
<?php //PHP數組排序:快速排序 $arr = array(1,6,3,4,9,2,7,8); //快速排序 function quick_sort($arr){ //遞歸出口 $len = count($arr); if($len <= 1) return $arr; //取出某個元素,然后將剩余的數組元素,分散到兩個不同的數組中 $left = $right = array(); for($i = 1;$i < $len;$i++){ //第一個元素作為比較元素 //比較:小的放left中,大的放right中 if($arr[$i] < $arr[0]){ $left[] = $arr[$i]; }else{ $right[] = $arr[$i]; } } if($arr[$i] < $arr[0]){ $left[] = $arr[$i]; }else{ $right[] = $arr[$i]; } } //合并三個“數”組. return array_merge($left,(array)$arr[0],$right); } echo '<pre>'; print_r(quick_sort($arr));
運行結果如下:
//$left和$right數組元素沒有排好序:遞歸點
$1eft = quick_ sort($1eft); $right = quick_ sort($right); .
快速排序的算法是:
1)從數組中選出一 -個元素(通常第一一個), 作為參照對象。。
2)定義兩個數組,將目標數組中剩余的元素與參照元素挨個比較:小的放到-一個數組,大的放到另外-一個數組。
3)第二步執行完之后,前后的數組順序不確定,但是確定了自己的位置。
4)將得到的小數組按照第 1到第3部重復操作(子問題)。
5)回溯最小數組 (一個元素)。
到此,相信大家對“PHP數組如何運用快速排序”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。