#include #include #include //プロトタイプ宣言 void quick_sort(int *array, int left, int right); int main(void) { int array[10]; int i; //ランダムに10個(0〜49まで)値を求める srand((unsigned)time(NULL)); for(i=0; i<10 ; i++) array[i] =rand() % 50; printf("ソート前配列データ\n"); //ソート前の配列の内容を表示 for(i=0; i<10; i++) printf("[%2d] %d\n", i+1, *(array+i)); printf("リターンキーを押すとソートされます\n"); getchar(); printf("ソート後配列データ\n"); //バブルソートを実行 quick_sort(array, 0, 9); //ソート後の配列の内容を表示 for(i=0; i<10; i++) printf("[%2d] %d\n", i+1, *(array+i)); getchar(); return 0; } 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); }