const int ITEMSIZE = 6; void shell_sort(int array[],int length){ int i,j,k,tempInt; int interval = length; do { interval = interval/2; // Shell 정렬 간격 설정. for (i=0; i<interval; i++){ // 인터벌 개수까지만 루프를 실행. for (j=i+interval; i<length; i+=interval){ // 삽입 정렬. 차이점이라면 인터벌 개수를 기점으로 돌린다는 차이. tempInt = num[j]; for(k=i; num[k] > tempInt && k>=0; k-=interval){ num[j] = num[k]; } num[j] = tempInt; } } } while (interval >= 1); } int main(void){ int array[itemSize] = {3, 8, 0, 2, 1, 4}; shell_sort(array,ITEMSIZE); }