quickSort Äü ¼ÒÆ®
void quickSort(DATA *data, int nmem, int asdes);
typedef struct {
int key; /* ºñ±³ÀÇ Å°°¡ µÇ´Â Çʵå */
int info; /* ±× ¿ÜÀÇ Çʵå */
} DATA;
data (ÀÔÃâ·Â) µ¥ÀÌÅÍ ·¹ÄÚµåÀÇ ¹è¿
nmem (ÀÔ·Â) ·¹ÄÚµå ¹è¿ÀÇ Å©±â
asdes (ÀÔ·Â) ½Â¼ø¡¤³»¸²Â÷¼øº°,0:½Â¼ø, 1:³»¸²Â÷¼ø
¾øÀ½
void quickSort(DATA *data, int nmem, int asdes)
{
static void rquickSort();
if (nmem <= 1) return;
rquickSort(data, asdes, 0, nmem - 1);
}
static void rquickSort(DATA *data, int asdes, int first, int last)
{
int i, j, x;
static void swap();
i = first;
j = last;
x = (data[i]. key + data[j]. key)/2;
while (i < j) {
if (asdes == 0) {
while (data[i]. key < x) i++;
while (data[j]. key > x) j--;
} else {
while (data[i]. key > x) i++;
while (data[j]. key < x) j--;
}
if (i < j) {
swap(&data[i], &data[j]);
i++;
j--;
}
}
if (first < i - 1) rquickSort(data, asdes, first, i - 1);
if (last > j + 1) rquickSort(data, asdes, j + 1, last);
}
static void swap(DATA *a, DATA *b)
{
DATA t;
t.key = a->key;
t.info = a->info;
a->key = b->key;
a->info = b->info;
b->key = t.key;
b->info = t.info;
}
ÀÌ¿ëÇÏ·Á¸é , µ¥ÀÌÅÍ ±¸Á¶¸¦ ½ÇÁ¦ÀÇ ¹®Á¦¿¡ ¸ÂÃß¾î ¼öÁ¤ÇÒ Çʿ䰡 ÀÖ´Ù.