PHP 계수정렬 구현

(PHP 카운팅정렬 구현에서 넘어옴)

1 개요[ | ]

PHP 카운팅정렬 구현
PHP 계수정렬 구현
<?php
function counting_sort(&$a) {
    $count=[];
    foreach($a as $x) {
        if(!array_key_exists($x,$count)) $count[$x]=1;
        else $count[$x]++;
    }
    ksort($count);
    $pos=0;
    foreach($count as $x => $repeat) {
        while( $repeat-- > 0 ) $a[$pos++]=$x;
    }
}
$arr = [9,1,22,4,0,-1,1,22,100,10];
counting_sort( $arr );
echo implode(',', $arr);
# -1,0,1,1,4,9,10,22,22,100
<?php
function counting_sort(&$a) {
    $count=[];
    foreach($a as $x) {
        if(!array_key_exists($x,$count)) $count[$x]=1;
        else $count[$x]++;
    }
    ksort($count);
    $pos=0;
    foreach($count as $x => $repeat) {
        $a = array_replace($a, array_fill($pos,$repeat,$x));
        $pos += $repeat;
    }
}
$arr = [9,1,22,4,0,-1,1,22,100,10];
counting_sort( $arr );
echo implode(',', $arr);
# -1,0,1,1,4,9,10,22,22,100
<?php
function counting_sort(&$a) {
    $min = min($a);
    $max = max($a);
    $count = [];
    for($i=$min; $i<=$max; $i++) $count[$i]=0;
    foreach($a as $x) $count[$x]++;
    for($i=$min, $j=0; $i<=$max; $i++) {
        while( $count[$i]-- > 0 ) $a[$j++] = $i;
    }
}
$arr = [9,1,22,4,0,-1,1,22,100,10];
counting_sort( $arr );
echo implode(',', $arr);
# -1,0,1,1,4,9,10,22,22,100

2 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}