• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:単純挿入法を入れたいんですけど・・・)

単純挿入法を使った整列プログラムの作成方法

このQ&Aのポイント
  • C++のプログラムにおいて、単純挿入法を使用して配列を整列する方法について解説します。
  • まず、ランダムな整数配列を生成します。
  • 次に、単純挿入法を使って配列を昇順に整列します。

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

  • ベストアンサー
回答No.3

void Sort(int *s, int n) { /* #2補足のアルゴリズム単体は間違ってないため,回答。 #見比べて理解してください。 #何故か関数内でnを宣言していないのに使っているのが気になったけど #理解しているなら他の変数宣言も無いと思うし…。 変更点。 1.宣言の不要な変数を全て削除。 2.配列aを軒並み配列sに。 */ int i; int j; int temp; for (i = 1; i < n; i++) { temp = s[i]; for (j = i; j > 0 && s[j-1] > temp; j--) { s[j] = s[j-1]; } s[j] = temp; } }

mutekisama
質問者

お礼

ありがとうございます。 またわからないことあったら教えてください。

その他の回答 (4)

回答No.5

>引数で渡しているのだから、全く問題ないですよね。 ええ、もちろん、それを使うのが正しいです。 でもそれが解ってたら#2の補足で関数内でわざわざNを宣言する必要は無い→質問者さんが理解しているかちょっと危ういような気もする というだけの話

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.4

>#3さん > #何故か関数内でnを宣言していないのに使っているのが気になったけど Sort()での話ですか?引数で渡しているのだから、全く問題ないですよね。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

> ネットで調べて単純挿入法というものはわかった もっと調べてください。 単純挿入法の考え方とともにサンプルコードを載せているサイトが見つかります。 もっとも、そのコードを単に丸写ししたのでは、 単純挿入法の考え方が本当に身につくかどうかは疑問です。

mutekisama
質問者

補足

void Sort(int *s, int n) { const int N = 100; int i,j,a[N],temp; for (i = 1; i < n; i++) { temp = a[i]; for (j = i; j > 0 && a[j-1] > temp; j--) { a[j] = a[j-1]; } a[j] = temp; } } このように作ったんですけど実行してもソートされないんですけど 何が違うんでしょうか?

回答No.1

その部分を補って完成させると良いと思いますよ。 「課題の丸投げ」は禁止されていますが、あなたが課題をやろうとして調べてもよく分からなかったことについての質問は禁止されておらず、そういうことを聞くために利用することはむしろ推奨されるでしょう。 調べた結果としてどうにも解けなくて、あなたが「何に」「どうして」困っているかを説明できるようになったらまた質問し直しに来てください。 とりあえず、この質問は違反ね。(違反でないなら補足をどうぞ)

mutekisama
質問者

補足

ネットで調べて単純挿入法というものはわかったんですが それをいざプログラムにしろと言われるとなかなかできないんです。