[アルゴリズム] 挿入ソートの実装(AWK編)

mailboxes-1838667_1280
LINEで送る
Share on GREE
Share on LinkedIn

挿入ソートは大本のJavascriptで関数型の比較的長めのプログラムで構築したため、その後の言語でのコーディングにかなり苦戦を強いられる事になってしまいました。
SHELLの時もそうですが、AWKでも相当の苦戦をしてしまいました。
この手のコマンド系のスクリプト言語は変数や関数の扱いが、他の言語と比べて仕様が浅いので、長めのプログラムには向いていないんですね。
でも頑張って構築してみました。

ソースコード

実行

解説

データを外部ファイルではなく、コマンドで受け渡し

今までは、外部ファイルに配列データをCSV形式で保存しておいてそれをデータ取り込みしていましたが、今回は、echoコマンドを使って、コマンドで受け渡し方式にしました。
これにより、柔軟に対応できるライブラリになりますね。

関数の値受け渡しにおける配列

AWKは受け渡しは基本的には文字列にしなければエラーが出るので、大本の配列データや一時的に作成する配列部分も全て文字列で行う仕様にしています。
それを配列を分解したり、変更する関数内では、受け渡された直後にsplitで文字列から配列に分解し、returnする直前で文字列形式に変換するようにしています。
AWK言語にはsplitはあるおにjoinがないという、配列には優しくない言語なので、joinに該当する処理を確定しておくと比較的便利に利用できます。
ちなみにsplitの基本構文は以下の通り

split(文字列*in , 出力配列変数*out , Delimitor-value*split);

関数チェックのためのデバッグprint

関数が多かったこととプログラムが長かったのでエラー箇所特定のためにメイン関数にprint文を書いてデバッグしていたのをわざとそのまま残しておきました。
こういうテストコードも関数化できると便利かも・・・

関連リンク

挿入ソート

解説
Javascript
PHP
Python
Shell
AWK

アルゴリズム過去記事

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

Leave a Reply

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


*