關於PHP的排序,還有其他的辦法嗎?

已邀請:

微博登陸

贊同來自:


排序,計算機科學中最常見的問題,面試的時候經常問到,如果要自己實現排序算法,肯定是可以的,隻是需要一點時間而已,使用PHP自帶的函數來進行排序,那自然是更加方便,各種sort用起來真是八仙過海各顯神通;但是除瞭各種sort之外,還有其他的辦法嗎?


今天看瞭一點PHP SPL的內容,於是就找到瞭數據結構中一個非常有用的東西:堆。


在SPL提供的堆數據結構中,有SplHeap、SplMaxHeap、SplMinHeap三個類,而SplMaxHeap和SplMinHeap就是可以用來做排序的好東西!


根據最大堆/最小堆的定義——http://zh.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%EF%BC%8F%E6%9C%80%E5%B0%8F%E5%A0%86,我們向堆中放入數據之後,直接取值時就已經排好順序瞭。


下面來看看測試代碼:



<?php require dirname(__FILE__)."/function.php"; $minHeap = new SplMinHeap(); $maxHeap = new SplMaxHeap(); for ($i=1; $i<=10; $i++) { $minHeap->insert(rand(1, 1000)); $maxHeap->insert(rand(1, 1000)); } pr("min heap!"); pr($minHeap); foreach ($minHeap as $value) { pr($value); } pr("max heap!"); pr($maxHeap); foreach ($maxHeap as $value) { pr($value); }

分別看看結果:




完全排好序瞭,一點也不用操心。


除瞭方便的排序之外,使用SPL還能提供方便的測試,應該在以後的工作中越來越多地使用SPL。

要回復問題請先登錄註冊