#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_SIZE 9
#define FALSE 0
#define TURE 1
typedef char ElementType;
typedef char Status;
typedef struct
{
ElementType array[MAX_SIZE + 1 ]; //array[0] ,reserved!
int length;
}Sqlist;
void swap(Sqlist* L,int i,int j);
void Bubble(Sqlist* L);
void PrintSqlit(Sqlist* L);
int main(void)
{
//printf("\n Bubble sort starts\n");
Sqlist Data = {{0,9,1,5,8,3,7,4,6,2},MAX_SIZE};//Normal exzample
// Sqlist Data = {{0,2,1,3,4,5,6,7,8,9},MAX_SIZE}; //exzample for Flag
PrintSqlit(&Data);
Bubble (&Data);
return 0;
}
void swap(Sqlist* L,int i,int j)
{
ElementType temp = L->array[i];
L->array[i] =L->array[j];
L->array[j] = temp;
}
/**
* Authour: kevin
* Bubble sort
* */
void Bubble(Sqlist* L)
{
int i ,j ;
Status Flag =TURE;
int count = 0;
for(i = 1;i < L->length &&Flag ;i++)
{
Flag = FALSE;
count++;
for(j = L->length;j > 1;j--)
{
if(L->array[j] < L->array[j-1])
{
swap(L,j,j-1);
Flag = TURE;
PrintSqlit( L);
}
}
}
printf("Count= %d\n",count); //count shows what the Flag can do !
}
void PrintSqlit(Sqlist* L)
{
int i = 0;
for(i = 1;i < L->length + 1;i++)
printf("%d ",L->array[i]);
printf("\n");
}