単純挿入法を入れたいんですけど・・・
#include <iostream>
#include <iomanip>
#include <cstdlib> //rand関数を使うので
using namespace std;
void Sort(int *s, int n); //プロトタイプ
int main()
{
const int N = 100;
int a[N], i, r, temp;
for(i = 0; i < N; i++)
a[i] = i;
for(i = 0; i < N; i++){
r = rand() % N;
temp = a[i]; a[i] = a[r]; a[r] = temp;
}
cout << "整列前\n----\n";
for(i = 0; i < N; i++)
cout << setw(4) << a[i];
cout << '\n';
Sort(a, N);
cout << "整列後\n----\n";
for(i = 0; i < N; i++)
cout << setw(4) << a[i];
cout << '\n';
return 0;
}
void Sort(int *s, int n)
{
//この部分を補って完成させること
}
投稿日時 - 2008-07-25 12:19:21
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;
}
}
投稿日時 - 2008-07-26 02:39:04
ありがとうございます。
またわからないことあったら教えてください。
投稿日時 - 2008-07-27 01:55:47
このQ&Aは役に立ちましたか?
17人が「このQ&Aが役に立った」と投票しています
回答(5)
> ネットで調べて単純挿入法というものはわかった
もっと調べてください。
単純挿入法の考え方とともにサンプルコードを載せているサイトが見つかります。
もっとも、そのコードを単に丸写ししたのでは、
単純挿入法の考え方が本当に身につくかどうかは疑問です。
投稿日時 - 2008-07-25 13:33:26
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;
}
}
このように作ったんですけど実行してもソートされないんですけど
何が違うんでしょうか?
投稿日時 - 2008-07-26 00:26:51
その部分を補って完成させると良いと思いますよ。
「課題の丸投げ」は禁止されていますが、あなたが課題をやろうとして調べてもよく分からなかったことについての質問は禁止されておらず、そういうことを聞くために利用することはむしろ推奨されるでしょう。
調べた結果としてどうにも解けなくて、あなたが「何に」「どうして」困っているかを説明できるようになったらまた質問し直しに来てください。
とりあえず、この質問は違反ね。(違反でないなら補足をどうぞ)
投稿日時 - 2008-07-25 12:37:59
ネットで調べて単純挿入法というものはわかったんですが
それをいざプログラムにしろと言われるとなかなかできないんです。
投稿日時 - 2008-07-25 12:41:21