2011-05-19 26 views
0

我寫的關於在PHP中堆排序的任務。我有點困難。請幫幫我。任何向我推薦代碼的人。 在此先感謝。如何在PHP中堆排序?

+1

歡迎來到SO!如果你能顯示你有多遠,以及你有什麼問題,你更有可能得到有用的迴應。 – bdares 2011-05-19 05:04:58

+1

如果php是問題,你可以開始編寫僞代碼,然後獲得幫助翻譯它。 – chelmertz 2011-05-19 05:05:57

回答

6

你有沒有使用這個? 看看這個。 Heap Sorting in PHP

<?php 
function build_heap(&$array, $i, $t){ 
    $tmp_var = $array[$i];  
    $j = $i * 2 + 1; 

    while ($j <= $t) { 
    if($j < $t) 
    if($array[$j] < $array[$j + 1]) { 
    $j = $j + 1; 
    } 
    if($tmp_var < $array[$j]) { 
    $array[$i] = $array[$j]; 
    $i = $j; 
    $j = 2 * $i + 1; 
    } else { 
    $j = $t + 1; 
    } 
    } 
    $array[$i] = $tmp_var; 
} 

function heap_sort(&$array) { 
    //This will heapify the array 
    $init = (int)floor((count($array) - 1)/2); 
    // Thanks jimHuang for bug report 
    for($i=$init; $i >= 0; $i--){ 
    $count = count($array) - 1; 
    build_heap($array, $i, $count); 
    } 

    //swaping of nodes 
    for ($i = (count($array) - 1); $i >= 1; $i--) { 
    $tmp_var = $array[0]; 
    $array [0] = $array [$i]; 
    $array [$i] = $tmp_var; 
    build_heap($array, 0, $i - 1); 
    } 
} 

// Demo 
$array = array(9,8,7,6,5,4,3,2,1,0,10,1000,0); 
heap_sort($array); 
print_r($array); 
?> 
+0

非常感謝它非常簡單的代碼。謝謝 – Chorlett 2011-05-19 05:13:42

+0

+ 1顯示最明顯的Google方式:) – anubhava 2011-05-19 05:39:09

+0

如何堆排序(Alphabatically)在PHP中的名稱數組?不是整數。 – Faizan 2013-01-06 10:47:42