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; }
ÀÌ¿ëÇÏ·Á¸é , µ¥ÀÌÅÍ ±¸Á¶¸¦ ½ÇÁ¦ÀÇ ¹®Á¦¿¡ ¸ÂÃß¾î ¼öÁ¤ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.