본문 바로가기
알고리즘

쉘 정렬(Shell sort)

by giicha2 2020. 11. 10.

 

 

 

 

 

 

# include <stdio.h>
# define MAX_SIZE 10

void inc_insertion_sort(int list[], int first, int last, int gap){
  int i, j, key;

  for(i=first+gap; i<=last; i=i+gap){
    key = list[i]; 

    for(j=i-gap; j>=first && list[j]>key; j=j-gap){
      list[j+gap] = list[j]; 
    }

    list[j+gap] = key;
  }
}

void shell_sort(int list[], int n){
  int i, gap;

  for(gap=n/2; gap>0; gap=gap/2){
    if((gap%2) == 0)(
      gap++; 
    )


    for(i=0; i<gap; i++){
      inc_insertion_sort(list, i, n-1, gap);
    }
  }
}

void main(){
  int i;
  int n = MAX_SIZE;
  int list[] = {10, 8, 6, 20, 4, 3, 22, 1, 0, 15, 16};

  shell_sort(list, n);

  for(i=0; i<n; i++){
    printf("%d\n", list[i]);
  }
}

'알고리즘' 카테고리의 다른 글

힙정렬(heap sort)  (0) 2021.01.13
병합정렬(Merge Sort)  (0) 2021.01.13
퀵정렬(Quick Sort)  (0) 2020.11.05
삽입정렬(insertion sort)  (0) 2020.10.21
선택정렬(selection sort)  (0) 2020.09.18

댓글