LoginSignup
0
0

More than 1 year has passed since last update.

シェルでバブルソートを作った話

Posted at

経緯

実は先日、Linuxの講習会を頼まれました.
一体何を教えればいいのかを考えた結果、講習会に参加する多くの生徒がすでに学習しているソートのうち、最もシンプルなバブルソートをシェルで組んでみようと思ったのがきっかけです.

バブルソートの概要

配列の端から順に隣の配列と自身の値を比較し,大きい方を隣に移動させていく.すると片方の端に最も大きな数字が出てきます.
すると次に探索範囲を一つ狭めて引き続き同様の処理を行う.すると最終的に大きいものが順に配列に配置されるため,泡(大きな数字)が移動することからバブルソートという名前のソートになったそうです.

作成したコード

以下に作成したコードを示します.

#!/bin/sh

# バブルソートをシェルでやってみた

arr=(5 54 2 6 7 121 75) # ソートする対象の配列

len=${#arr[@]}                              # 配列の大きさ
for i in `seq 0 $(( ${len} - 1 ))`          # 第一ループ
do
    for j in `seq $(( ${len} - 1 )) 0`      # 第二ループ
    do
        if [ $j -le $i ]; then
            break                           # i > jを満たさなくなったら次のループへ
        fi
        if [ ${arr[$j]} -lt ${arr[( $j - 1 )]} ]; then
            temp=${arr[$j]}                 # swap
            arr[$j]=${arr[$(( $j - 1 ))]}   # swap
            arr[$(( $j - 1 ))]=$temp        # swap
        fi
    done
done
echo ${arr[@]}                              # ソート終了時に結果出力

まとめ

今回はシェルスクリプトの勉強の一環としてソートアルゴリズムを実際のシェル処理に落とし込むという試みをした。
時間があればもっと別の処理を組んでみたい.(クイックソートとか)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0