/*
 * bubblesort.c                                                              .
 *
 */
 typedef enum { false, true } boolean;
 
   void swap(int *a, int*b){
      int c;
      c = *a;
      *a = *b;
      *b = c;
      
  }
  void bubblesort( int a[], int size){
    int n, i, count = 0;
    for(n = 0; n < size; n++){
        boolean swapmade = false;
        for(i = 1; i < size; i++){
            if( a[i-1] > a[i] ){
                swap( &a[i-1] , &a[i] );
                swapmade = true;
            }
            count++;
        }
        if(!swapmade){break;}
    }
    printf("%d\n",count);
  }
   
 int main( void ) {
     
     int n;
     int a[] = {10, 9, 8, 7, 6 ,5, 4, 3, 2, 1, 0};
     int *b = a;
     int size;
     for(size = 0; *(b + size) > 0; size++);
     
     bubblesort( a, size);
     
     for(n = 0; n < size; n++){ printf("%4d", *(b + n));}
     printf("\n");
     
     char s[] = {'H', 'e', 'l', 'l', 'o', 0};
     printf("%s\n", s);
     
     return 0;
 }