• 締切済み

アルゴリズムについて教えてください

トランプのダイヤのカードが13枚ある。 順序はバラバラになっている。 小さい順に並べるアルゴリズムを考えよ。 という課題が出されました。 アルゴリズムの意味はわかるのですが、やり方がさっぱりわかりません。確率の考え方を使うのですか? ヒントでもいいので教えてください。 よろしくお願いします。

noname#58115
noname#58115

みんなの回答

  • Ishiwara
  • ベストアンサー率24% (462/1914)
回答No.8

#7です。 すみません。「元祖」バブルソートは、次のアルゴリズムです。 このほうがビールの泡に似ています。 iを1から12まで繰り返す --i番目とi+1番目のカードを比べ前者が大きければ交換 上記を1ループとして、これを無限に繰り返す 1ループの中で交換が1回も行われなければ終了 #7で紹介したものはバブルソートの変形です。正確な名前は知らないので、どなたか助け舟を。

  • Ishiwara
  • ベストアンサー率24% (462/1914)
回答No.7

質問者さんは初心者とお見受けします。もし違ったらごめんなさい。 まず「バブルソート」を覚えてください。これは、コップの中の泡が次第に上がっていくようすを指します。 i を1から12まで繰り返す --jをi+1から13まで繰り返す ----i番目がj番目より大きければ入れ替える で完成です。実際にダイヤ13枚と、「i」「j」と書いた札を用意して、机の上でやってみましょう。あとはプログラミングですね。 ちょっと丸投げ質問の疑いもありますが、このあと自力でプログラミングができるなら、よしとしましょう。

  • moritan2
  • ベストアンサー率25% (168/670)
回答No.6

> トランプのダイヤのカードが13枚、 これって別々のカードですか? もし、そうならソートする必要なんかなくて、データを作ってしまえばいいんですけど。 そうでないなら、ソートすることになりますが、トランプのカードなら、値が限定されているのでビンソートが高速でしょうね。

  • noocyte
  • ベストアンサー率58% (171/291)
回答No.5

数分差で #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)
回答No.4

実際にトランプを番号順に並べたいときどうしますか, いろいろな方法が思いつきますが,どれかひとつを子供でもできるように説明すれば,アルゴリズムになっているでしょう。 例えば, (1)カードを置くスペースを13箇所確保し,左から1~13番とする。 (2)カードを1枚めくって,ランクがkだったらk番目の位置に置く。 (3)(2)を13回繰り返す。

回答No.3

「フローチャート」ってご存知ですか? 流れ図のことです。 下の方の回答にもありますので具体的なソート(順序入れ替え)方法は割愛しますが、 アルゴリズムの回答としては、 フローチャートでソートの流れを 書くのが一般的でわかりやすいと思います。 http://www2.ee.knct.ac.jp/el/E2/L210/algorism/flowchart1.html

回答No.2

トランプということは、1~13枚のうち、  1→A  11→J  12→Q  13→K ということになります。 簡単に小さい順に並び替えるとすれば、隣通しを比較して場所を入れ替えていき、入れ替えがなくなれば小さい順に並んでいるはずです。

noname#39977
noname#39977
回答No.1

ソートアルゴリズムなら単純交換法(バブルソート)や単純選択法、単純挿入法などがあります。(他にマージソート、クイックソートなど)それらの言葉で検索してみてはいかがでしょうか。

関連するQ&A

  • 遺伝的アルゴリズムについて

    遺伝的アルゴリズムについて調べているのですが、 「決定的規則」、「確率的オペレータ」という言葉の意味を探してもみつかりません。 どなたか教えてください。 サイトでもいいです。 カテゴリー違いだったら書き直します。

  • このアルゴリズムを何回繰り返せばよいのか。

    次のようなアルゴリズムAがある。 P(x)=1であるような入力xに対しては必ず正しい答え1を出すが、 P(x)=0であるような入力xに対しては確率0.001で正しい答えを出し、 確率0.999で間違った答えを出す。 この時、どんな入力に対しても確率0.99以上で正しい答えを出すアルゴリズムを構成せよ。 という問題なのです。 答えは  0.01 > (0.999)**n   ( (0.999)**nは0.999のn乗の意味 ) が成り立つ最小のn回アルゴリズムを繰り返せばよいと考えたのですが、 この式を解くとnが2000以上になると思います。 難しくてきちんとしたnの値は出てきませんでした。 何かこの式を簡単に解く式変形の仕方ってありますか?? それともこの問題をこの式で解くのが間違っているのでしょうか??? よろしくお願いします!!!

  • C言語のアルゴリズム

    C言語についての質問です。 C言語の足しこみのアルゴリズムを書く課題が出されたのですが、どうやって書けばいいのかわかりません。 この意味もあんまり理解できないんです…。 この文章の意味、もしくはどう表現したらいいのか教えてください。 お願いします。

  • トランプで同じ数字が4枚そろう確率

    一組のトランプから任意の4枚を抜き、それがすべて同じ数字になる(その数字のダイヤ・ハート・スペード・クラブがそろう)確率は何%(または何分の一)でしょうか? また、その確率は まず好きなカードを一枚選ぶ(仮にダイヤの5とします)→次に任意の3枚を抜き、それがハート・スペード・クラブの5である確率 と同じでしょうか? 数学の式や考え方ではなく純粋に答えが知りたいです。 よろしくお願いします。

  • 納得のいかない確立問題

    某スレで出てた問題の事で質問です。 「昔の某大学の入試問題で ジョーカーを除いたトランプ52枚の中から1枚のカードを抜き出し、表を見ないで箱の中にしまった。 そして、残りのカードをよく切ってから3枚抜き出したところ、3枚ともダイアであった。 このとき、箱の中のカードがダイヤである確率はいくらか。」 答えは4分の1だったらしいのですが、どう考えても49分の1としか思えません。 スレでの意見としては、最初にカードを引いた時点では4分の1で、その後何をしようと関係ないから4分の1だという意見が多かったのですが・・・ 実際問題、3枚ダイアがでてからの箱の中のトランプの絵柄の確立なんですから・・・ 数学とかは全くわかりませんが、現実世界で賭けをするとして最後に4枚引いて全部ダイアだったら、「箱の中のトランプはダイアか?」と聞かれたら「NO」に有り金全部賭けますよね?4分の1だから大金は賭けないと言う人はいないのでは・・・

  • 超幾何分布

    よく切られたトランプから13枚の札が配られるとき、スペードがx枚くる確率及びx枚のスペードとy枚のダイヤがくる確率を求めよ。 という問題なのですが、 (ⅰ)スペードがx枚くる確率 P(X=x) = {13Cx * 39C(13-x)}/(52C13) これの式の意味は {13枚の中に含まれるスペードの枚数×残る39枚の中に含まれるスペードの枚数}/(52枚の中から13枚選ぶ) であっていますでしょうか。 (ⅰ)x枚のスペードとy枚のダイヤがくる確率 P(X=x,Y=y) = {13Cx * 13Cy * 26C(13-x-y)}/(52C13) これの式の意味は {13枚の中に含まれるスペードの枚数×13枚の中に含まれるダイヤの枚数×残る26枚の中に含まれるスペードとダイヤの枚数}/(52枚の中から13枚選ぶ) であっていますでしょうか。

  • 確率

    確率なんですが、 ジョーカーを除く1組のトランプ52枚から同時に3枚のカードを取り出す試行において、次の事象が怒る確率を求めよ。 (1)カードのマークが3種類 (2)カードのマークが2種類 詳しくお願いします。特に(2)がPをつかっているのかいみがわかりません。

  • ターボ符号:MAPアルゴリズム(最大事後確率)

    通信の分野で、ターボ符号について勉強しています。 そこで、ターボ符号におけるトレリス図の信頼度λを計算する際、MAPアルゴリズムが使われていました。 この信頼度λを導出する際、separability theorem(分離定理?)が使われていました。 次のような感じです。 信頼度λ=α・β/∥α・β∥  α:事前確率 β:事後確率 ∥∥:ノルム このλをベイズの定理や、マルコフ過程を用いて 式展開をして、最後に分離定理が証明できたと 書いてあるのですがまったく意味が分かりませんでした。 また、MAPアルゴリズムに関する本もなかなか見つからず、困っています。 MAPアルゴリズムに関する本を教えていただけるだけでもありがたいです。 説明が本当に悪くて申し訳ありません。 どうかよろしくお願いします。

  • アルゴリズムのご相談

    はじめまして DHCPのような動作をするアルゴリズムを考えている最中なのですが… その案の中でどうしてもクリア出来ない課題があります。 「配列で作られたテーブルにユーザ名の一覧があり、 そのユーザ名をキーワードとして配列のインデックスを抽出したい」 というもので、これだけなら簡単なのですが、以下3つの条件の提示により、無理ではないかと思えて仕方がないです。 ・ユーザ名は何らかのルールに則って作られた文字列ではない。 ・キーワードを頭から順に比較して探していく方法を使ってはいけない。 ・ユーザの追加・削除がある度にソートし直さなければならないような構造にしてはいけない。 2分探索法などの検索回数を減らす方法はソートされてることが前提条件ですし、 ユーザ名から配列のインデックスに使える数値に変換できるような都合のいい関数なんて存在しないように思えるのですが、いかがでしょう? ちなみに開発言語はCです。

  • 確率の問題

    A,B,C,D,Eの5人が1つのサイコロと、1組53枚(ジョーカー1枚を含む)のトランプを使って、次のゲームを行う。 トランプのカードはよくきって重ねてふせておく。 まず、Aがサイコロを振り、出た目がaならば上から順にa枚のカードを取る。 そのa枚の中にジョーカーがあれば、「Aの勝ち」でゲームが終了する。 ジョーカーがなければ、……。 という問題について質問です。 (1)Aが勝つ確率 を求めたいのですが、サイコロを振り、aが出て、a枚のカードを引いたとき、「その中にジョーカーのある確率」がわかりません。 53枚のうちa枚をひいて、そのa枚の中にジョーカーがある確率…。 どのように考えて求められるでしょうか。