新しく発言する EXIT インデックスへ
学校の宿題

  学校の宿題 まいまい 2004/11/25 00:03:14 
  まいまいさんにとってなにが問題で、どうし... 青木太一 2004/11/25 08:49:25 
  │└さて「宿題」となると、どうすればいいのか... 青木太一 2004/11/25 08:50:59 
  │ └上のa,b,cの場合参考になりそうな情報を書い... 青木太一 2004/11/25 08:53:14 
  詳しく教えてくださってありがとうございま... まいまい 2004/11/28 14:58:47 

  学校の宿題 まいまい 2004/11/25 00:03:14  ツリーへ

学校の宿題 返事を書く
まいまい 2004/11/25 00:03:14
アルゴリズムについて。できるだけ時間をかけずに並べ替えるプログラムを作れと言われたのですが・・・

  まいまいさんにとってなにが問題で、どうし... 青木太一 2004/11/25 08:49:25  ツリーへ

Re: 学校の宿題 返事を書く
青木太一 2004/11/25 08:49:25
まいまいさんにとってなにが問題で、どうしたいのかが書かれてないのでなんともいえないのですが、適当に書いてみます。

「並べ替え(なんのだろう?)を行うアルゴリズムを考える宿題がでたのだが、どうすればいいのかわからない」
ということだと勝手に解釈します。

まず「並べ替え」というのがどういう意味で使われた問題なのでしょうか?
とりあえずおおまかに言っていかの三種類が思いつきました。
a. あたえられた配列の適当な並べ替えを一回行う
b.与えられた範囲の数字(たとえば1から10まで)を並べ替えてできるすべてのパターンを提示する
c.数字の配列が与えられて、それを値の小さい順や大きい順に並べ替える

この中のどれかですか。それとも別の意味ですか?

  │└さて「宿題」となると、どうすればいいのか... 青木太一 2004/11/25 08:50:59  ツリーへ

Re: まいまいさんにとってなにが問題で、どうし... 返事を書く
青木太一 2004/11/25 08:50:59
さて「宿題」となると、どうすればいいのかわからなくなったときは
1.まず自分でアルゴリズムを考えてみる
2.考えてもわからないところがあるのなら、そのわからない部分を先生に聞く
3.先生にアクセスしにくいなら詳しそうな友人に聞く
というのがまっとうな解決法です。

質問しようにも「どこがわからないのかもわからない」ということもおうおうにしてありますが、その場合は与えられた教材やノートを最初から読み返してみて、わからなくなった行があったらそこがあなたの「わからないところ」です(たとえ最初の数行目であっても)。そこを先生に質問しましょう。

すでにそのような過程を経たのであったり、
なんらかの理由で上のような解決法をとれないということでしたら
ちょっとずるいですけど、図書館やインターネットで答えを調べるという方法があります。
ずるいと書きましたが、ちゃんと「なぜその答えになるのか」を理解したうえで「考えたけどわからなかったのでここを参考に調べました」という旨を書き添えれば問題ないと思います。)

というようなお説教臭いことを書くだけでは恐縮なので上のa,b,cの場合に参考になりそうな情報を書いてみます

  │ └上のa,b,cの場合参考になりそうな情報を書い... 青木太一 2004/11/25 08:53:14  ツリーへ

Re: さて「宿題」となると、どうすればいいのか... 返事を書く
青木太一 2004/11/25 08:53:14
上のa,b,cの場合参考になりそうな情報を書いてみます。

「a. あたえられた配列の適当な並べ替えを一回行う」
配列の要素の値をてきとうに何回か入れ替えればいいわけですね。
たとえば普通の変数iとjの値を入れ替えるなら
tmp=i
i=j
j=tmp
という風にすれば入れ替えられます。tmpとはtemporary(一時的)という意味です。

「b.与えられた範囲の数字(たとえば1から10まで)を並べ替えてできるすべてのパターンを提示する」
これは「順列」を生成する問題ですね。インターネットの検索で
「順列 生成」や、英語がわかるのなら「permutation generate」というキーワードで検索をかけてみてください。
http://www.google.co.jp/search?hl=ja&c2coff=1&q=%E9%A0%86%E5%88%97+%E7%94%9F%E6%88%90&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
私がぱっと検索した感じでは、BASICの例は見つけられませんでした。
C言語で複数の順列生成アルゴリズムを紹介している
http://www.sra.co.jp/people/miyata/algorithm/genperm.txt
や、Javaを使った英語のページですが、
http://www.merriampark.com/perm.htm
の最後の関数がコメントが添えられていてわかりやすいと思いました。(英語ですが...)

「c.数字の配列が与えられて、それを値の小さい順や大きい順に並べ替える」
これはソートという問題ですね。たとえば「ソート アルゴリズム」というキーワードで
インターネットを検索してみてはどうでしょうか?

インターネットはある程度理解していないと読み解けないぺージも多いですから、
図書館でアルゴリズムの本を探すのもいいかもしれません。
「a:適当な並べ替え」は簡単すぎて、「b:順列生成」は専門的すぎて
載ってないこともあるかもしれませんが、「c:ソート」だったらアルゴリズムの本ならたいてい載っていると思います。

以上、長く読みにくくなってしまいましたが適当に書き連ねてみました。
まいまいさんの参考になれば幸です。

  詳しく教えてくださってありがとうございま... まいまい 2004/11/28 14:58:47  ツリーへ

Re: 学校の宿題 返事を書く
まいまい 2004/11/28 14:58:47
詳しく教えてくださってありがとうございました。頑張ってみます!


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。