[アルゴリズム] 選択ソートの実装(Shell編)

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

選択ソートもこなれてきてshell言語での記述を行いたいと思います。
基準をPHPとして、書き直しをするだけで、ほぼ問題なく実行できてしまうので、複数言語対応も慣れると、共通な書き方があることに気がついてくる。
言語ならではの特徴を表してもいいのだが、現時点では、汎用性を有効に考えて行なっていきたいと思うので、もっといい書き方があれば、コメントなどで反映させていこうと思います。

ソースコード

実行

解説

PHPバージョンからの書き直しで行なったんですが、基本的にほとんどのコードが類似で書き直しができた。
ただ、shellのfunctionの受け渡し値がどうしても多言語のように、値で受け渡すことができず、ARGV扱いで行うしか無いので、この点が非常にやりずらい。
関数内でわざわざ、変数に格納してつかわないといけないのも面倒くさい。

shコマンドのトラブル

macのshコマンド実行とubuntuのshコマンド実行でトラブルあり。
ubuntuでは、コマンドをbashにすることで無事に実行する事ができたのだが、shとbashの違いが現れたので、macのshellよりはubuntuのshellの方が本番実行に近いのでそちらを有効に考えたいと思います。
ちなみに、ubuntuでのshコマンドを実行した際にfunction関数が正常に動作しませんでした。

配列の扱い

shellで配列から値を取り出す時に
「${arr[@]:$i:1}」としているが「${arr[$i]}」としてもいいし、多言語との互換を考えて「$arr[$i]」としても問題ない。
いくつか書き方のバージョンがあるのは、もちろん便利に使えるポイントもあるので、気になる人は調べてみるともっと効率いい書き方にたどり着けるかも。

functionの返り値に配列

shellのfunctionの返り値で配列にしたい場合は、ソースコードを参照して「${arr[@]}」とすることで配列の全てを返すことができる。
「$arr」として返すと配列の最初の1つ目の値しか返らないのでトラブルの元です。
お作法として覚えておきましょう。

関連リンク

選択ソート

解説
Javascript
PHP
Python
Shell

アルゴリズム過去記事

http://wordpress.ideacompo.com/?cat=562&tag=Algorithm

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です