되는대로 살자

[알고리즘] 셰이커 정렬(shaker sort) 본문

2009~2014/C/C++

[알고리즘] 셰이커 정렬(shaker sort)

malu 2011. 5. 11. 19:51

쉐이커 정렬: 거품정렬을 개선한 정렬 방법으로 거품정렬 에서는 부분 집합이 오름차순으로 정렬되어 있어도 무조건 비교하는 효율성이 떨어지는 점을 보완하기 위해 쉐이커 정렬이 만들어 졌다.

#include <stdio.h>

#define N 6

int main(void)
{
 static int a[]={1,3,2,4,5,6};
 int left,right,i,shift,t,j;
 
 left=0; right=N-1;
 while(left<right){
  for(i=left;i<right;i++){
   if(a[i]>a[i+1]){
    t=a[i]; a[i]=a[i+1]; a[i+1]=t;
    shift=i;
   }
  }
  right=shift;
  for(i=right;i>left;i--){
   if(a[i]<a[i-1]){
    t=a[i]; a[i]=a[i-1]; a[i-1]=t;
   }
  }
  left=shift;
 }
 for(i=0;i<N;i++)
  printf("%d ",a[i]);
 printf("\n");

 return 0;
}