Soft Ware/자료구조 및 알고리즘

세이커 정렬입니다

달려가보자 2012. 4. 16. 07:51

void ShakerSort(int Data[], int nCount)
{
 int Left = 0;
 int Right = nCount;
 int ChaData = 0;
 int count = 0;
 int count1 = 0;
 int shift = 0;

 while(Left < Right)
 {
  for(count = Left; count < Right; count++)
  {
   if(Data[count]>Data[count+1])
   {
    ChaData = Data[count];
    Data[count] = Data[count+1];
    Data[count+1] = ChaData;
    shift = count;
   }
  }

  Right = shift;

  for(count = Right; count > Left; count--)
  {
   if(Data[count] < Data[count-1])
   {
    ChaData = Data[count];
    Data[count] = Data[count-1];
    Data[count-1] = ChaData;
    shift = count;
   }
  }

  Left = shift;
 }
}

 

이정렬은 버블 정렬을 보완하기 위해 나온 정렬로써

마지막 스왑한 인덱스를 기억해놓고  범위를 줄이는 정렬이다

버블 정렬을 보완하기 나온 정렬임으로 정렬방법은 버블과 비슷하다 ~