1 개요[ | ]
- PHP 힙정렬 구현
PHP
Copy
<?php
function heap_sort(&$a) {
$heapify = function(&$a, $size, $i) use (&$heapify) {
$largest = $i;
$L = 2*$i + 1;
$R = 2*$i + 2;
if( $L<$size && $a[$i]<$a[$L] ) $largest=$L;
if( $R<$size && $a[$largest]<$a[$R] ) $largest=$R;
if( $largest != $i ) {
$temp=$a[$i]; $a[$i]=$a[$largest]; $a[$largest]=$temp;
$heapify($a, $size, $largest);
}
};
$size = count($a);
for($i=$size; $i>-1; $i--) $heapify($a, $size, $i);
for($i=$size-1; $i>0; $i--) {
$temp=$a[$i]; $a[$i]=$a[0]; $a[0]=$temp;
$heapify($a, $i, 0);
}
}
$arr = [9,1,22,4,0,-1,1,22,100,10];
heap_sort( $arr );
echo implode(',',$arr);
# -1,0,1,1,4,9,10,22,22,100
PHP
Copy
<?php
function heapify(&$a, $size, $i) {
$largest = $i;
$L = 2*$i + 1;
$R = 2*$i + 2;
if( $L<$size && $a[$i]<$a[$L] ) $largest=$L;
if( $R<$size && $a[$largest]<$a[$R] ) $largest=$R;
if( $largest != $i ) {
$temp=$a[$i]; $a[$i]=$a[$largest]; $a[$largest]=$temp;
heapify($a, $size, $largest);
}
}
function heap_sort(&$a) {
$size = count($a);
for($i=$size; $i>-1; $i--) heapify($a, $size, $i);
for($i=$size-1; $i>0; $i--) {
$temp=$a[$i]; $a[$i]=$a[0]; $a[0]=$temp;
heapify($a, $i, 0);
}
}
$arr = [9,1,22,4,0,-1,1,22,100,10];
heap_sort( $arr );
echo implode(',',$arr);
# -1,0,1,1,4,9,10,22,22,100
2 같이 보기[ | ]
편집자 Jmnote Jmnote bot
로그인하시면 댓글을 쓸 수 있습니다.