ソートについてなのですが・・・
ソートについてなのですが・・・
こんにちわ、初めてこのサイトを利用します。
単純選択ソートについて課題が出されたのですが、今までバブルソートしかやってこなかったのでこんがらがっています・・・
乱数を発生させてその数を配列に入れて降順にソートするのですが、ソートの部分を関数void sort(int ab[],n)を利用して作らなければならなくて
とりあえず乱数を発生させて配列に入れて表示させるところまではできたのですが・・・
どなたか分かりやすくプログラムとその説明を教えてくださいませんでしょうか?
聞き方間違えていたら申し訳ないです、よろしくお願いします。
単純選択ソートについて課題が出されたのですが、今までバブルソートしかやってこなかったのでこんがらがっています・・・
乱数を発生させてその数を配列に入れて降順にソートするのですが、ソートの部分を関数void sort(int ab[],n)を利用して作らなければならなくて
とりあえず乱数を発生させて配列に入れて表示させるところまではできたのですが・・・
どなたか分かりやすくプログラムとその説明を教えてくださいませんでしょうか?
聞き方間違えていたら申し訳ないです、よろしくお願いします。
Re: ソートについてなのですが・・・
>ソートの部分を関数void sort(int ab[],n)を利用して作らなければならなくて
既にソート処理の関数が用意されているなら
あとは呼ぶだけなのでは…??
とりあえず課題であれば,可能ならば課題の内容全てが分かる形の方が(誰かが)答えやすいと思います.
さらに,「現在どこまできていて,どこができていない」みたいなのをコードで示すと良いかと.
#フォーラムルールにコードの部分をどう書けばいいかなどが書かれているので目を通してください
既にソート処理の関数が用意されているなら
あとは呼ぶだけなのでは…??
とりあえず課題であれば,可能ならば課題の内容全てが分かる形の方が(誰かが)答えやすいと思います.
さらに,「現在どこまできていて,どこができていない」みたいなのをコードで示すと良いかと.
#フォーラムルールにコードの部分をどう書けばいいかなどが書かれているので目を通してください
Re: ソートについてなのですが・・・
私の解釈はこうです。usao さんが書きました:>ソートの部分を関数void sort(int ab[],n)を利用して作らなければならなくて
既にソート処理の関数が用意されているなら
あとは呼ぶだけなのでは…??
void sort(int ab[], n)
というプロトタイプ宣言を持つ関数を「単純選択法を使って『自作』」し、
プログラム全体を完成させる。
この解釈が正しいかどうかは、質問者さんのみぞ知る。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: ソートについてなのですが・・・
私は を実装しろ、という意味だと考えました。box さんが書きました:私の解釈はこうです。
void sort(int ab[], n)
というプロトタイプ宣言を持つ関数を「単純選択法を使って『自作』」し、
プログラム全体を完成させる。
しかし、プロトタイプ宣言ならば というコードをその前に書けば普通にコンパイルを通せるので、
プロトタイプ宣言と解釈したほうが適切だと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ソートについてなのですが・・・
自作するでも実装するでもどっちでもいいんですが、
要するに、別の回答者さんが書かれている
「すでにできあがっている関数を呼ぶだけ」ではないであろう、
ということです。それじゃ課題にならない。
おそらく、その課題の本質は「単純選択ソートというアルゴリズムを
自分のものにする」ところにあると思います。
したがって、出来合いのコードを使うのではなく、自作する(自分で実装する)点に
大きな意味があると思います。
というわけですから、頑張ってください。>質問者さん
要するに、別の回答者さんが書かれている
「すでにできあがっている関数を呼ぶだけ」ではないであろう、
ということです。それじゃ課題にならない。
おそらく、その課題の本質は「単純選択ソートというアルゴリズムを
自分のものにする」ところにあると思います。
したがって、出来合いのコードを使うのではなく、自作する(自分で実装する)点に
大きな意味があると思います。
というわけですから、頑張ってください。>質問者さん
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: ソートについてなのですが・・・
こちらを参考に書いたのですがソート後の出力がうまくいきません、何が間違えているのでしょうか?non さんが書きました:ここが参考になると思われます。
http://www.geocities.jp/ky_webid/Progra ... t/002.html
#include"kansuu.h"
void main(void)
{
int a[N];
int i;
printf("ソート前データ\n");
srand((unsigned)time(NULL));
for(i=0;i<N;i++)
{
a[i]=rand()%100+1;
printf("%d",a[i]);
}
putchar('\n');
printf("ソート後データ\n");
sort(a,N);
for(i=0;i<N;i++)
{
printf("%d",a[i]);
}
putchar('\n');
}
ソート 関数
#include"kansuu.h"
void sort(int ab[],int n)
{
int i,j,k;
int temp;
int min;
for(i=0;i<n-1;i++){
min=ab[i];
k=i;
for(j=i+1;j<n;j++){
if(min>ab[j]){
min=ab[j];
k=j;
}
temp = ab[i];
ab[i] =ab[k];
ab[k] = temp;
}
}
}
最後に編集したユーザー 鴉味 on 2013年11月06日(水) 23:34 [ 編集 1 回目 ]
Re: ソートについてなのですが・・・
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ソートについてなのですが・・・
きちんと2個のソースファイルをコンパイルしたオブジェクトファイルをリンクしましたか?
わざわざオブジェクトファイルを作らなくても、最初のソースコードをmain.c、二番目のソースコードをsort.cだと仮定して、 としてコンパイルすればいいはずです。
わざわざオブジェクトファイルを作らなくても、最初のソースコードをmain.c、二番目のソースコードをsort.cだと仮定して、 としてコンパイルすればいいはずです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ソートについてなのですが・・・
学校で使っているものと違うので、慣れてなかったので操作を間違えていました><
やってみたらしっかりと実行して昇順にソートしていました。ありがとうございます^^
やってみたらしっかりと実行して昇順にソートしていました。ありがとうございます^^
Re: ソートについてなのですが・・・
すいません、ごっちゃになってました
if文の演算子を逆にしたら降順になったので大丈夫です。
ご指摘ありがとうございます><
if文の演算子を逆にしたら降順になったので大丈夫です。
ご指摘ありがとうございます><