FC2ブログ

# 双方向バブルソート シェーカーソート Shaker Sort
# 引数 値 (\@Price)
# 戻り値 シェーカーソート (@ShakerSort)
sub SHAKERSORT{
my ($Price) = @_;
my @ShakerSort = @$Price;
my $Loop = ((@$Price % 2) == 0 ? (@$Price / 2) - 1 : int(@$Price / 2));
my $Count = @$Price - 1;

# 配列数の確認
if($Count < 0){
return 0;
}

# 昇順ソート
for(my $i = 0; $i < $Loop; $i++){
# 右に最大値
for(my $j = $i; $j < ($Count - $i); $j++){
if($ShakerSort[$j] > $ShakerSort[$j + 1]){
# 双方向バブルソート シェーカーソート Shaker Sort
($ShakerSort[$j], $ShakerSort[$j + 1]) = ($ShakerSort[$j + 1], $ShakerSort[$j]);
}
}

# 左に最小値
for(my $j = $Count - ($i + 1); $j > $i; $j--){
if($ShakerSort[$j] < $ShakerSort[$j - 1]){
# 双方向バブルソート シェーカーソート Shaker Sort
($ShakerSort[$j], $ShakerSort[$j - 1]) = ($ShakerSort[$j - 1], $ShakerSort[$j]);
}
}
}

return @ShakerSort;
}


参考URL
シェーカーソート - Wikipedia
オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

Author:雨宮
Firefoxを使用しているので気づかなかったけど、IE6でソースコードを上手くコピーできない

5/3
携帯用ならIE6でもソースコードをコピーできる
携帯用

検索フォーム


あわせて読みたいブログパーツ
一寸先は闇 RSS