※ ChatGPTを利用し、要約された質問です(原文:クイックソートの解説頂けないでしょうか。)
クイックソートの解説
このQ&Aのポイント
クイックソートについての解説とトレース方法をまとめます。
初めてのC言語プログラムでクイックソートに挑戦していますが、トレースでつまっています。
プログラムの詳細な解説やアドバイスをいただけると助かります。
C言語を始めたばかりのプログラマ見習いです。
クイックソートのトレースでつまっています。
下記プログラムにあたっているのですが、
どなたか解説頂けないでしょうか。
void q_sort(int d[],int left,int right)
{
int i=left;
int j=right;
int t;
t=d[(i+j)/2];
while(i<j){
for(;t>d[i];i++)
;
for(;t<d[j];j--)
;
if(i<=j){ /*Swap*/
int t;
t=d[i];
d[i]=d[j];
d[j]=t;
i++;
j--;
}
}
if(left<j){
q_sort(d,left,j);
}
if(){
q_sort(d,i,right);
}
}
長い引用で申し訳ありません。
クイックソートの理論的な部分は理解しているつもりです
(最初に基準値を置き、それより大きいもしくは小さい
値を左右に振り分ける→分割統治法で繰り返し、最終的に
値がソートされた状態になる)。
よく判らないのがwhile文の中、特に最初のfor文の
役割です。初期値が空文で、中身もなし・・・この文は
なにをしているのでしょうか?
ネット上で解説されているソースをのぞいてみましたが
少し形が違っていたので、できればこのプログラムを
もとにアドバイス頂けないでしょうか。
それ以外の回答(参考URL等)でも嬉しいです。
どうぞ宜しくお願いします
お礼
早速回答頂き、ありがとうございます。 初期化がなされているので、 i=0 j=9 (・・・数字10個の時はこうですね) などわざわざ書かないのですね。 見たことがない文なので、戸惑ってしまいました。 再度トレースして整理してみます。 ありがとうございました。