<?php
function HeapAdjust(&$data,$s,$t){//对数组进行堆整理,构建大顶堆
$rc = $data[$s];
$i = $s;
for ($j=$i*2;$j <=$t;$j=$j*2){
if ($j< $t && $data[$j] < $data[$j+1]){
$j = $j+1;
}
if($rc > $data[$j]){
break;
}
$data[$i] = $data[$j];
$i = $j;
}
$data[$i] = $rc;
}
function HeapSort(&$data){
//
//print_r($data);
$len = count($data);
for($i=$len/2;$i>=0; $i--){
HeapAdjust($data,$i,$len);
}
array_unshift($data,"shiyan");
for($i =$len;$i>1;$i--){
$flag = $data[1];
$data[1] = $data[$i];
$data[$i] = $flag;
HeapAdjust($data,1,$i-1);
}
}
$data = array(1,44,3,5,8,20,1,4);
HeapSort($data);
$data=array_slice($data,1);
print_r($data);
?>