본문 바로가기

플밍 is 뭔들/자료구조

07-5 셸 정렬

※ 셸 정렬(Shell Sort)
 - 일정한 간격(interval)으로 떨어져 있는 자료들끼리 크기를 비교하여 교환
 - 일정한 간격(interval)은 원소의 개수/2 를 하고 비교가 끝난 후에는 다시 간격(interval)/2를 해서 간격이 1이 될때 까지 수행한다.
 - 전체 원소에 대하여 삽입 정렬을 수행하는 것보다 부분집합으로 나누어 정렬하면 비교 연산과 교환 연산의 횟수를 줄일 수 있다.


※ 구현

Main
public class Main {
       public static void main(String args[]){
              int a[] = {69,10,30,2,16,8,31,22};
              int size = a.length;
              ShellSort ss = new ShellSort();
              System.out.println("정렬할 원소 : ");
              for(int i=0; i<a.length; i++){
                     System.out.print(" " + a[i]);
              }
              System.out.println();
              ss.shellSort(a, size);
       }
}

ShellSort
public class ShellSort {
       
       int[] a;
       
       public void shellSort(int a[], int size){
              if(this.a==null){
                     this.a=a;
              }
              
              int h = size/2;
              int temp;
              while(h >= 1){
                     for(int i=0; i < size ; i++){
                           if(i+h <= size-1){
                                  for(int j = i+h; j<=size-1; j=j+h){
                                         if(a[j-h]> a[j]){
                                                temp = a[j];
                                                a[j] = a[j-h];
                                                a[j-h]= temp;
                                         }
                                  }
                           }else{
                                  break;
                           }
                           
                     }
                     System.out.println("중간결과");
                     printA();
                     h = h/2;
              }      
              
              System.out.println("최종결과");
              printA();
       }
       public void printA(){
              for(int i=0; i<a.length; i++){
                     System.out.print(" " + a[i]);
              }
              System.out.println();
       }
}

'플밍 is 뭔들 > 자료구조' 카테고리의 다른 글

07-7 기수 정렬  (0) 2016.11.30
07-6 병합 정렬  (0) 2016.11.30
07-4 삽입 정렬  (0) 2016.11.30
07-3 퀵 정렬  (0) 2016.11.30
07-2 버블 정렬  (0) 2016.11.30