【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.18955

No924のクイックについて
投稿者---・・・(2005/01/02 00:12:15)


二次元配列の場合のプログラムは結局どうなるんですか?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:No924のクイックについて 18957 RAPT 2005/01/02 01:25:37


No.18957

Re:No924のクイックについて
投稿者---RAPT(2005/01/02 01:25:37)


>二次元配列の場合のプログラムは結局どうなるんですか?
何の話?


この投稿にコメントする

削除パスワード

No.18958

Re:No924のクイックについて
投稿者---・・・(2005/01/02 01:45:07)


>何の話?
過去ログのNo924なんですがこのサイトとは関係ないんですか?
一応URLを貼り付けます。
http://f1.aaa.livedoor.jp/~pointc/index11.html


この投稿にコメントする

削除パスワード

No.18959

Re:No924のクイックについて
投稿者---RAPT(2005/01/02 01:51:27)


>過去ログのNo924なんですが
最初から書いて欲しかった。
「過去ログ」という単語とそのURL。
それから変に略さないで欲しい。「クイックソート」

で、「何が」分からないのですか?
コードは書いてみましたか?
どうなりましたか?
どう(なれ|すれ)ばよいと思いますか?



この投稿にコメントする

削除パスワード

No.18960

Re:No924のクイックについて
投稿者---・・・(2005/01/02 01:58:51)


いろいろわかりずらく書いてしまいすみません。
お聞きしたいのは二次元配列のときのクイックソートに
ついてです。
コードを書いてみたのですが後で修正されてたので二次元配列
のときの正しいコードがどれだかよくわからないのです。
正しいコードがどれだか教えてほしいのです。





この投稿にコメントする

削除パスワード

No.18961

Re:No924のクイックについて
投稿者---もぐりん(2005/01/02 11:38:34)


自分が書いたソースを提示してください。
そうすれば間違いなどを指摘してもらえるでしょう。
提示する際は、【掲示板ご利用上の注意】を熟読してから
行ってください。



この投稿にコメントする

削除パスワード

No.18962

Re:No924のクイックについて
投稿者---・・・(2005/01/02 14:55:53)


これを実行すると辞書順になるとこと
ならないとこがあるのですがどこが悪いのですか?
#include <stdio.h>
#include <string.h>

void quick_sort(char [][30], int, int);

int main()
{
    char name[][30] = {
        "Ka",  "Ao",  "Is",  "Wa",  "Ue",
        "Uet", "On",  "Oga", "Aok", "Ka",
        "Kim", "Kik", "Kur", "Ko",  "Sa",
        "Sai", "Sag", "Sas", "Shi", "Shis",
        "Shir","Suz", "Su",  "Seg", "Set",
        "Son", "Tac", "Tag", "Too", "Tsu",
        "Tom", "Tod", "Nak", "Ni",  "Nem",
        "Nom", "Ha",  "Hi",  "Ho",  "Ma",
        "Mi",  "Mu",  "Mo",  "Ya",  "Yo",
        "Yos", "Yok", "Wa",  "Wac", "I"
    };
    const int size = sizeof name / sizeof *name;
    int i;

    quick_sort(name, 0, size-1);
    for (i = 0; i < size; i++) puts(name[i]);
    return 0;
}

void quick_sort(char name[][30], int s, int e)
{
    int i, j;  char t[30],x[30];

    if (s >= e) return;
    strcpy(x,name[(s + e) / 2]);
    for (i = s,  j = e; ; i++, j--) {
        while (strcmp(name[i],x) < 0) i++;
        while (strcmp(name[j],x) > 0) j--;
        if (i >= j) break;
        strcpy(t,name[i]);strcpy(name[i],name[j]);
        strcpy(name[j],t);
    }
    quick_sort(name, s, j-1);
    quick_sort(name, i+1, e);
}



この投稿にコメントする

削除パスワード

No.18964

Re:No924のクイックについて
投稿者---RAPT(2005/01/02 19:23:26)


多分、タイプミスでしょう。
最後のところで、i と j を逆に書いています。

quick_sort(name, s, j-1); quick_sort(name, i+1, e);
quick_sort(name, s, i-1); quick_sort(name, j+1, e); これを修正したら、きちんとソートされました。 Windows2000sp4/VC++6.0sp6/Console-App



この投稿にコメントする

削除パスワード

No.18966

Re:No924のクイックについて
投稿者---・・・(2005/01/02 19:43:11)


実行されました。
ありがとうございましたm(_ _)m


この投稿にコメントする

削除パスワード

No.19114

Re:No924のクイックについて
投稿者---・・・(2005/01/10 01:07:07)


このプログラムのquick_sort関数のところにそれぞれが
何をするためのものか/* */によって簡単に記述してくれませんか?
理解に苦しんでます。
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;

void quick_sort(char [][30], int, int);

int main()
{
char name[][30] = {
&quot;Ka&quot;, &quot;Ao&quot;, &quot;Is&quot;, &quot;Wa&quot;, &quot;Ue&quot;,
&quot;Uet&quot;, &quot;On&quot;, &quot;Oga&quot;, &quot;Aok&quot;, &quot;Ka&quot;,
&quot;Kim&quot;, &quot;Kik&quot;, &quot;Kur&quot;, &quot;Ko&quot;, &quot;Sa&quot;,
&quot;Sai&quot;, &quot;Sag&quot;, &quot;Sas&quot;, &quot;Shi&quot;, &quot;Shis&quot;,
&quot;Shir&quot;,&quot;Suz&quot;, &quot;Su&quot;, &quot;Seg&quot;, &quot;Set&quot;,
&quot;Son&quot;, &quot;Tac&quot;, &quot;Tag&quot;, &quot;Too&quot;, &quot;Tsu&quot;,
&quot;Tom&quot;, &quot;Tod&quot;, &quot;Nak&quot;, &quot;Ni&quot;, &quot;Nem&quot;,
&quot;Nom&quot;, &quot;Ha&quot;, &quot;Hi&quot;, &quot;Ho&quot;, &quot;Ma&quot;,
&quot;Mi&quot;, &quot;Mu&quot;, &quot;Mo&quot;, &quot;Ya&quot;, &quot;Yo&quot;,
&quot;Yos&quot;, &quot;Yok&quot;, &quot;Wa&quot;, &quot;Wac&quot;, &quot;I&quot;
};
const int size = sizeof name / sizeof *name;
int i;

quick_sort(name, 0, size-1);
for (i = 0; i &lt; size; i++) puts(name[i]);
return 0;
}

void quick_sort(char name[][30], int s, int e)
{
int i, j; char t[30],x[30];

if (s &gt;= e) return;
strcpy(x,name[(s + e) / 2]);
for (i = s, j = e; ; i++, j--) {
while (strcmp(name[i],x) &lt; 0) i++;
while (strcmp(name[j],x) &gt; 0) j--;
if (i &gt;= j) break;
strcpy(t,name[i]);strcpy(name[i],name[j]);strcpy(name[j],t);
}
quick_sort(name, s, i-1);
quick_sort(name, j+1, e);
}
</pre>


この投稿にコメントする

削除パスワード

No.19115

Re:No924のクイックについて
投稿者---あかま(2005/01/10 02:19:47)


>このプログラムのquick_sort関数のところにそれぞれが
>何をするためのものか/* */によって簡単に記述してくれませんか?
>理解に苦しんでます。
とりあえず投稿に失敗したら貼りなおしたほうが。

quick_sort関数ですが、クイックソートなんてどれも動作はほとんど同じなわけですから、
クイックソートについて調べたらいいんじゃないでしょうか?
解説サイトには大抵サンプルコードも載ってますし。


この投稿にコメントする

削除パスワード

No.19116

Re:No924のクイックについて
投稿者---・・・(2005/01/10 03:14:34)


わかりました。すみませんでした。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧