This version of the bubble sort is called the shaker sort : Shaker Sort « Search Sort « C Tutorial






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


  void shaker(char *items, int count)
  {
    register int a;
    int exchange;
    char t;

    do {
      exchange = 0;
      for(a=count-1; a > 0; --a) {
        if(items[a-1] > items[a]) {
          t = items[a-1];
          items[a-1] = items[a];
          items[a] = t;
          exchange = 1;
        }
      }

      for(a=1; a < count; ++a) {
        if(items[a-1] > items[a]) {
          t = items[a-1];
          items[a-1] = items[a];
          items[a] = t;
          exchange = 1;
        }
      }
    } while(exchange); /* sort until no exchanges take place */
  }

  int main(void)
  {

    char s[255];

    printf("Enter a string:");
    gets(s);
    shaker(s, strlen(s));
    printf("The sorted string is: %s.\n", s);

    return 0;
  }
Enter a string:2
The sorted string is: 2.








15.2.Shaker Sort
15.2.1.This version of the bubble sort is called the shaker sort