#include <stdio.h>
#include <stdlib.h>



void cocktail_sort(int *data, int n)
{
  int i, tmp, k, left, right = n-1, shift = -1;



  while((left=shift) < right)
  {
    for(i = left+1; i < right; i++)
    {
      if (data[i] > data[i+1])
      {
        tmp = data[(shift=i)];
        data[i] = data[i+1];
        data[i+1] = tmp;
       
        for(k = 0; k < n; k++)
          if (k == i || k == i+1) printf("[%2d] ", data[k]); else printf(" %2d  ", data[k]);
        printf("\n");
      }
      else { for(k = 0; k < n; k++) printf(" %2d  ", data[k]); printf("\n"); }
    }
    printf("\n");
      
    for(i = (right=shift)-1; i > left; i--)
    {
      if (data[i] > data[i+1])
      {
        tmp = data[(shift=i)];
        data[i] = data[i+1];
        data[i+1] = tmp;
       
        for(k = 0; k < n; k++)
          if (k == i || k == i+1) printf("[%2d] ", data[k]); else printf(" %2d  ", data[k]);
        printf("\n");
      }
      else { for(k = 0; k < n; k++) printf(" %2d  ", data[k]); printf("\n"); }
    }
    printf("\n");
  }
}



int main()
{
  int i, n = 6;
  int data[6] = { 40, 25, 13, 17, 75, 7 };
 
  printf("========== 정렬 전 ==========\n");
  for(i = 0; i < n; i++) printf(" %2d  ", data[i]); printf("\n");



  printf("\n========== 정렬 ==========\n");
  cocktail_sort(data, n);



  printf("========== 정렬 후 ==========\n");
  for(i = 0; i < n; i++) printf(" %2d  ", data[i]); printf("\n");

  system("pause");
  return 0;
}