• ベストアンサー

バケット法による文字列ソート

バケット法のアルゴリズムを用いて、入力した任意の文字列 (例) "tanaka" "yamashita" "suzuki" "yamamoto" を、 "suzuki" "tanaka" "yamamoto" "yamashita" といった具合にアルファベット順にソートするプログラムについて、 バケット法のアルゴリズム自体は理解しているのですが、それをいざプログラムにするというと、構造がイマイチ思いつきません。 C言語でバケット法を用いて文字列のソートを行うプログラムを、 具体的に、どなたか教えてくださらないでしょうか? 初歩的な質問ですみません。一応、C言語の基本的なことについては 大体理解しているつもりですが、まだまだC言語初心者のため、 なるべく簡単なプログラムを作成していただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

学校の課題だというのに > なるべく簡単なプログラムを作成していただければ幸いです。 とか > 参考として完成形のプログラムを教えていただけないでしょうか? とか堂々と書いちゃまずいでしょ。 そもそもバケットソートの場合 欠点は、取りうる値の種類mに対応するバケツが必要な点である。仮にキーが32ビット整数という以外に事前情報がないデータ列をソートする場合、約43億個のバケツが必要にある。長さに制限のない可変長の文字列の場合は、もはや有限個のバケツでは対応できない。この欠点は、基数ソートと組み合わせることで回避できる場合もある。 バケットソート - Wikipedia http://ja.wikipedia.org/wiki/%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E3%82%BD%E3%83%BC%E3%83%88 という特性があるので、提示されている条件だけでは プログラムにしようがないような気もしますけど? #適当に仮定を置けば別ですが

その他の回答 (2)

  • sgwjn
  • ベストアンサー率70% (47/67)
回答No.3

そもそも、バケットソートは有限個の整数(ここ重要)に対して用いるアルゴリズムです。 課題で文字列のソートにバケットソートを使用するように指定してあるならば、理解に苦しみますね。

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.1

>バケット法のアルゴリズム自体は理解している ならばフローチャートを紙に書きましょう。 そうすれば、今回のソートにどの様な変数、 どの様な機能を持った関数が必要か明確になると思います。

dash118
質問者

補足

お早い回答ありがとうございます。 フローチャートについてですが、自分でも一応考えています。 なので全体の流れも把握しているつもりなのですが、漠然とした 考えしか浮かばず、プログラムに書き起こす事ができません。 時間があれば自分でもう少し考えたいところなのですが、 大学の授業の課題になっているものなので、提出まで時間があまりありません。 参考として完成形のプログラムを教えていただけないでしょうか? 自分勝手な注文で申し訳ないですが、お答えいただければ幸いです。

関連するQ&A