- 締切済み
アルゴリズムについて教えてください
トランプのダイヤのカードが13枚ある。 順序はバラバラになっている。 小さい順に並べるアルゴリズムを考えよ。 という課題が出されました。 アルゴリズムの意味はわかるのですが、やり方がさっぱりわかりません。確率の考え方を使うのですか? ヒントでもいいので教えてください。 よろしくお願いします。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- Ishiwara
- ベストアンサー率24% (462/1914)
#7です。 すみません。「元祖」バブルソートは、次のアルゴリズムです。 このほうがビールの泡に似ています。 iを1から12まで繰り返す --i番目とi+1番目のカードを比べ前者が大きければ交換 上記を1ループとして、これを無限に繰り返す 1ループの中で交換が1回も行われなければ終了 #7で紹介したものはバブルソートの変形です。正確な名前は知らないので、どなたか助け舟を。
- Ishiwara
- ベストアンサー率24% (462/1914)
質問者さんは初心者とお見受けします。もし違ったらごめんなさい。 まず「バブルソート」を覚えてください。これは、コップの中の泡が次第に上がっていくようすを指します。 i を1から12まで繰り返す --jをi+1から13まで繰り返す ----i番目がj番目より大きければ入れ替える で完成です。実際にダイヤ13枚と、「i」「j」と書いた札を用意して、机の上でやってみましょう。あとはプログラミングですね。 ちょっと丸投げ質問の疑いもありますが、このあと自力でプログラミングができるなら、よしとしましょう。
- moritan2
- ベストアンサー率25% (168/670)
> トランプのダイヤのカードが13枚、 これって別々のカードですか? もし、そうならソートする必要なんかなくて、データを作ってしまえばいいんですけど。 そうでないなら、ソートすることになりますが、トランプのカードなら、値が限定されているのでビンソートが高速でしょうね。
- noocyte
- ベストアンサー率58% (171/291)
数分差で #4 さんに先に書かれちゃいました … (^^; #4 さんのアルゴリズムはビンソート (バケットソートなどともいう) といい, 私の知る限り最速のソートアルゴリズムで,データ数 (この場合は13枚) に 比例する時間でソートできます.しかしキーが整数型以外の場合には 使いにくいせいか,あまり知られていないようです. 「ビンソート」で Google 検索 http://www.google.co.jp/search?sourceid=navclient-ff&ie=UTF-8&rls=GGGL,GGGL:2006-34,GGGL:ja&q=%22%E3%83%93%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%88%22 ソート (Wikipedia) http://ja.wikipedia.org/wiki/Category:%E3%82%BD%E3%83%BC%E3%83%88
- mis_take
- ベストアンサー率35% (27/76)
実際にトランプを番号順に並べたいときどうしますか, いろいろな方法が思いつきますが,どれかひとつを子供でもできるように説明すれば,アルゴリズムになっているでしょう。 例えば, (1)カードを置くスペースを13箇所確保し,左から1~13番とする。 (2)カードを1枚めくって,ランクがkだったらk番目の位置に置く。 (3)(2)を13回繰り返す。
- nobunorinobu
- ベストアンサー率30% (19/63)
「フローチャート」ってご存知ですか? 流れ図のことです。 下の方の回答にもありますので具体的なソート(順序入れ替え)方法は割愛しますが、 アルゴリズムの回答としては、 フローチャートでソートの流れを 書くのが一般的でわかりやすいと思います。 http://www2.ee.knct.ac.jp/el/E2/L210/algorism/flowchart1.html
- Holmes2007
- ベストアンサー率25% (3/12)
トランプということは、1~13枚のうち、 1→A 11→J 12→Q 13→K ということになります。 簡単に小さい順に並び替えるとすれば、隣通しを比較して場所を入れ替えていき、入れ替えがなくなれば小さい順に並んでいるはずです。
ソートアルゴリズムなら単純交換法(バブルソート)や単純選択法、単純挿入法などがあります。(他にマージソート、クイックソートなど)それらの言葉で検索してみてはいかがでしょうか。