标签:
$arr = [9, 43, 12, 0, 87, 1]; function swap(&$arr, $i, $j){ $tmp = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $tmp; } //merge_sort($arr); function heap_sort(&$arr){ $len = count($arr) -1; $m = intval($len/2); //先构建一个大顶堆 for($i = $m; $i >= 0; $i--){ heap_adjust($arr, $i, $len); } // for($i = $len; $i > 0; $i--){ echo "$i"; swap($arr, 0, $i); heap_adjust($arr, 0, $i -1); } } /* *$arr的$start+1到$end之间是一个大顶堆,新加的第一个元素,让这个元素从新成为一个大顶堆 */ function heap_adjust(&$arr, $start, $end){ if($start >= $end){ return; } $tmp = $arr[$start]; $i = $start; for($j = 2 * $start; $j <= $end; $j *=2 ){ if($j+1 <= $end && $arr[$j+1] > $arr[$j]){ $j++; } if($arr[$j] < $tmp){ break; } $arr[$i] = $arr[$j]; $i = $j; } $arr[$i] = $tmp; } heap_sort($arr); var_export($arr);
标签:
原文地址:http://www.cnblogs.com/fengfengtk/p/5452770.html