上の方針で書いたのが次のプログラムです. クイックソートは その形から再帰的なプログラムになるので, quicksort と 言う名前の函数を用意します. 函数に配列を引数で渡しますが, この例の様に配列名で渡します. この詳しい仕組みを知りたい方は, 後期の 授業を受けるか, 自習するかして下さい.
/* File name 13-2.c */ #include <stdio.h> #define SIZE 20 int data[SIZE]= {99,73,20,32,34,5,64,97,25,12,83,9,21,40,3,44,69,15,58,75}; void quicksort(int list[], int left, int right); main() { int i; quicksort(data, 0, SIZE-1); for (i=0; i<SIZE; i++) printf("%d ", data[i]); printf("\n"); } void quicksort(int list[], int left, int right) { int i, last; int temp; if (left >= right) return; last = left; for (i=left+1; i <= right; i++){ if (list[i] < list[left] ){ last++; temp=list[last]; list[last]=list[i]; list[i]=temp; } } temp=list[left]; list[left]=list[last]; list[last]=temp; quicksort(list, left, last-1); quicksort(list, last+1, right); }