上京エンジニアの葛藤

都会に染まる日々

Perl でバブルソートをしてみる

はろー。こんにちは。

今更ながらソートアルゴリズムを改めて復習しているので、バブルソートPerl でしてみたいと思います。

バブルソートとは

ソートのアルゴリズムの一つ。隣り合う要素の大小を比較しながら整列させること。最悪計算時間がO(n2)と遅いが、アルゴリズムが単純で実装が容易なため、また並列処理との親和性が高いことから、しばしば用いられる。安定な内部ソート。基本交換法、隣接交換法ともいう。(単に交換法と言う場合もある)
Wikipedia : https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%96%E3%83%AB%E3%82%BD%E3%83%BC%E3%83%88

上記のように Wikipedia では解説されているのでわからない人は読んでください。

実際のコード

#!/usr/bin/perl
use warnings;
use strict;
use Data::Dumper;

my $array = [13, 5, 41, 20, 1];

for (my $i = 0; $i < scalar @$array - 1; $i++) {
    for (my $n = 1; $n < scalar @$array; $n++) {
        if (@$array[$n] < @$array[$n-1]) {
            my $tmp       = @$array[$n-1];
            @$array[$n-1] = @$array[$n];
            @$array[$n]   = $tmp;
        }
    }
}

warn Dumper $array;

1;

しんぷるにできました。