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

toy-1808127_1280
LINEで送る
Share on GREE
Share on LinkedIn

挿入ソートにおけるPythonは、僕が今までコーディングしたPython言語で最長のプログラムになってしまいました。
あえて、そうしたという事もありますが、配列操作の勉強になったので、まあ結果良しということにしましょう。
そして、多言語構成をそのまま持ってきたので修正ボリュームもなかなかのものとなってしまいました。

ソースコード

解説

nullではなくてNone

Pythonはnull使えないんですね。「None」です。
しかも、if文での扱いは”hoge == null”ではなく、”hoge is None”です。
ググればすぐにわかるんですが、多言語と違う点なので、慣れるのに少し時間かかりそうです。

for文のrangeに注意

今までなんとなく使ってたので奇跡的に問題なかったのですが、”for i in range(0,10)”とした場合、
内部で扱われるiに入る値は”0~9″になります。
これてっきり”0~10″だと思っていて-1していたので、バグの温床でした。

型に注意

PHPもJavascriptも型に関しては非常に緩い言語として有名ですが、Pythonは比較的しっかり管理したほうがよさそうです。
これまでのプログラムでは、挿入位置を返していた関数で、対象値よりも大きい数値がなく、挿入箇所がない場合(一番うしろに追加する場合)
nullを返して対応してましたが、returnで数値とnullという2つの型を同じ変数で対応するのが問題だと考えて、
null(None)ではなく、配列番号の最大値+1という仕様に変更しています。

実行

多言語で同じプログラムを書くと、言語に引っ張られる記述をすることもありますが、それまで書いてきたプログラムで動かない事による、より慎重な記述ができるようになり、この点はまあまあプラスと言ってもいいのではないでしょうか?
プログラマーのスキルは書き込んだプログラムコードの行数に比例するという説はまあまあ正しいのではないかと考えられますね。
あくまで一般論ですが・・・

関連リンク

挿入ソート

解説
Javascript
PHP
Python

アルゴリズム過去記事

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

Leave a Reply

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