#include <stdio.h>
void quick(int a[],int left,int right)
{
int iL,iR,iM;
int midData,t;
iM = (left + right)/2;
midData = a[iM]; //枢軸値(値をメモル)を決定
for(iL = left,iR = right; iL <= iR ; ){ //小さい集合と大きい集合へ分ける
while(a[iL] < midData) iL++; //枢軸値以上の交換対象になる要素の添え字を取得
while(a[iR] > midData) iR--; //枢軸値以下の交換対象になる要素の添え字を取得
if(iL <= iR){
t = a[iL]; //交換
a[iL] = a[iR];
a[iR] = t;
iL++;
iR--;
}
}
if(left < iR) quick(a,left,iR);
if(iL < right) quick(a,iL,right);
}
void main()
{
int i;
int a[] = {0,13, 8, 1, 17, 7, 4 , 9 , 3, 2};
for(i = 1; i < 10; i++)
printf("%d ",a[i]);
printf("\n");
quick(a,1,9);
for(i = 1; i < 10; i++)
printf("%d ",a[i]);
printf("\n");
}