C言語ソートアルゴリズムの「クイックソート法」
高速法は3つのパラメータを定義(配列ヘッダアドレス*a、配列開始要素の下付きiを並べ替え、配列終了要素の下付きjを並べ替える).まず、配列要素(一般的にはa[(i+j)/2]、すなわち中間要素)を参照として選択し、それより小さい要素を左側に、それより大きいものを右側に置きます.次に再帰を用いて,左,右の2つのサブ配列を並べ替え,最後に配列全体の並べ替えを完了する.コードを分析します.
void quick(int *a,int i,int j)
{
int m,n,temp;
int k;
m=i;
n=j;
k=a[(i+j)/2]; /* */
do {
while(a--<k && m<j) m++; /* k */
while(a[n]>k && n>i) n--; /* k */
if(m<=n) { /* , */
temp=a--;
a-=a[n];
a[n]=temp;
m++;
n--;
}
}while(m<=n);
if(m<j) quick(a,m,j); /* */
if(n>i) quick(a,i,n);
}