"쉘정렬 구현"의 두 판 사이의 차이

7번째 줄: 7번째 줄:
$gap=int($size/2);
$gap=int($size/2);
while ($gap>0) {
while ($gap>0) {
        for $i ($gap..$size) {
    for $i ($gap..$size) {
                $temp=$arr[$i];
        $temp=$arr[$i];
                $j=$i;
        $j=$i;
                while ($j >= $gap && $arr[$j-$gap] > $temp) {
        while ($j >= $gap && $arr[$j-$gap] > $temp) {
                        $arr[$j]=$arr[$j-$gap];
            $arr[$j]=$arr[$j-$gap];
                        $j-=$gap;
            $j-=$gap;
                }
                $arr[$j]=$temp;
         }
         }
         $gap /= 2;
         $arr[$j]=$temp;
    }
    $gap /= 2;
}
}
print join(',', grep /\S/, @arr);
print join(',', grep /\S/, @arr);

2018년 8월 28일 (화) 09:31 판

1 Perl

@arr = (9,1,22,4,0,-1,1,22,100,10);
$size=@arr;
$gap=int($size/2);
while ($gap>0) {
    for $i ($gap..$size) {
        $temp=$arr[$i];
        $j=$i;
        while ($j >= $gap && $arr[$j-$gap] > $temp) {
            $arr[$j]=$arr[$j-$gap];
            $j-=$gap;
        }
        $arr[$j]=$temp;
    }
    $gap /= 2;
}
print join(',', grep /\S/, @arr);
#-1,0,1,1,4,9,10,22,22,100

2 Python

def shell_sort(a):
    size = len(a)
    gap = size//2
    while gap>0:
        for i in range(gap,size):
            temp=a[i]
            j=i
            while j>=gap and a[j-gap]>temp:
                a[j]=a[j-gap]
                j-=gap
            a[j]=temp
        gap//=2
arr = [9,1,22,4,0,-1,1,22,100,10]
shell_sort(arr)
print(arr)
# [-1, 0, 1, 1, 4, 9, 10, 22, 22, 100]

3 Ruby

def shell_sort(a)
    size = a.size
    gap = size/2
    while gap>0
        for i in (gap...size)
            temp=a[i]
            j=i
            while j>=gap and a[j-gap]>temp
                a[j]=a[j-gap]
                j-=gap
            end
            a[j]=temp
        end
        gap /= 2
    end
end
arr = [9,1,22,4,0,-1,1,22,100,10]
shell_sort(arr)
print(arr)
# [-1, 0, 1, 1, 4, 9, 10, 22, 22, 100]

4 같이 보기

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