shellSort ½© ¼ÒÆ®
void shellSort(DATA *data, int nmem, int asdes);
typedef struct { int key; /* ºñ±³ÀÇ Å°°¡ µÇ´Â Çʵå */ int info; /* ±× ¿ÜÀÇ Çʵå */ } DATA; data (ÀÔÃâ·Â) µ¥ÀÌÅÍ ·¹ÄÚµåÀÇ ¹è¿ nmem (ÀÔ·Â) ·¹ÄÚµå ¹è¿ÀÇ Å©±â asdes (ÀÔ·Â) ½Â¼ø¡¤³»¸²Â÷¼øº°,0:½Â¼ø, 1:³»¸²Â÷¼ø
¾øÀ½
void shellSort(DATA *data, int nmem, int asdes) { int i, j, k; int h; DATA t; for (h = 1; h <= nmem; h = 3*h + 1); while ((h = h/3) >= 1) { for (i = h; i < nmem; i++) { t.key = data[i]. key; t.info = data[i]. info; for (j = i - h; j >= 0; j -= h) if (asdes == 0) { if (data[j]. key > t.key) { data[j+h]. key = data[j]. key; data[j+h]. info = data[j]. info; } else break; } else { if (data[j]. key < t.key) { data[j+h]. key = data[j]. key; data[j+h]. info = data[j]. info; } else break; } data[j+h]. key = t.key; data[j+h]. info = t.info; } } }
±× ¾ÆÀ̵ð¾î·Î¼´Â, h¿ä¼ÒºÐ¸¸Å ¶³¾îÁø ¿ä¼Ò³¢¸®¸¦ ¿ì¼± ¼ÒÆ® ÇØ, h ÀÇ °ªÀ» Á¡Á¡ ÀÛ°Ô ÇÏ¸é¼ ¼ÒÆ®¸¦ ¹Ýº¹ÇÑ´Ù. ¸¶Áö¸·¿¡´Â, h=1À¸·Î ¼Ò Æ® ÇÑ´Ù.