void quick_sort(int *array, int left, int right) { //要素軸には配列番号の最も小さいものの値を採用する int i, j = left+1, tmp, pivot = *(array+left); //要素がひとつなら関数を抜ける if(left >= right) return; //軸の値と比較し、大小二つのグループに分類する for(i=left+1; i <=right; i++) if(*(array+i) <= pivot){ tmp = *(array+i); *(array+i) = *(array+j); *(array+j) = tmp; j++; } //要素軸を配列の後ろに入れ替える tmp = *(array+left); *(array+left) = *(array+j-1); *(array+j-1) = tmp; //再起呼び出しを行う quick_sort(array, left, j-2); quick_sort(array, j, right); }