|
¤½¤ó¤Ê¤â¤ó¡¢¼«Ê¬¤Ç½ÐÎϤ¹¤ì¤Ð¤¤¤¤¤Ç¤·¤ç¤¦¡©
#include <stdio.h>
void put_var(const char *str, int i, int d[], int key)
{
printf("%.20s\td[%d]=(%d)\tkey(%d)\n", str, i, d[i], key);
}
void quick_sort(int d[], int top, int end)
{
int key, wk, i, j;
key = d[(top + end) / 2];
i = top - 1; j = end + 1;
for(;;) {
printf("i = (%d)\n", i);
++i;
put_var("whileÁ°:i", i, d, key);
while( d[i] < key ){
put_var("whileÃæ:i", i, d, key);
++i;
}
printf("j = (%d)\n", j);
--j;
put_var("whileÁ°:j", j, d, key);
while( d[j] > key ){
put_var("whileÃæ:j", j, d, key);
--j;
}
if (i >= j) break;
wk = d[i]; d[i] = d[j]; d[j] = wk;
}
if (top < i - 1) quick_sort(d, top, i - 1);
if (j + 1 < end) quick_sort(d, j + 1, end);
}
int main()
{
int d[] = { 50,30,70,60,90,40,80,10, };
const int size = sizeof d / sizeof d[0];
int i;
quick_sort(d, 0, size-1);
for (i = 0; i < size; i++){
printf("%d\n", d[i]);
}
return 0;
}
|