/* Bubble sort */

#define FALSE 0
#define TRUE 1
#include <stdio.h>

void bubble_sort_insanity(int *list, int list_size)
{
	int j,k,temp,sorted=FALSE;
	while(!sorted)
	{
		sorted = TRUE; /* assume the list is sorted */
		for(j=0;j<list_size-1;j++)
		{
			if(*(list+j) > *(list+j+1))
			{
				sorted = FALSE;
				temp = *(list+j);
				*(list+j) = *(list+j+1);
				*(list+j+1) = temp;
			}
		}
	}
}

void bubble_sort_sanity(int list[], int list_size)
{
	int j,k,temp,sorted=FALSE;
	while(!sorted)
	{
		sorted = TRUE; /* assume the list is sorted */
		for(j=0;j<list_size-1;j++)
		{
			if(list[j] > list[j+1])
			{
				sorted = FALSE;
				temp = list[j];
				list[j] = list[j+1];
				list[j+1] = temp;
			}
		}
	}
}

void dump_array(int array[], int size)
{
	int i;
	for(i=0;i<size;i++)
		printf("%d ",array[i]);
	printf("\n");
}

int main()
{
	int 	array1[5]={2,4,6,4,5},
		array2[10]={1,6,5,4,3,9,0,8,1,2},
		array3[5]={2,4,6,4,5},
		array4[10]={1,6,5,4,3,9,0,8,1,2};

	dump_array(array1,5);
        dump_array(array2,10);
        dump_array(array3,5);
        dump_array(array4,10);

	bubble_sort_sanity(array1,5);
	bubble_sort_sanity(array2,10); 
	bubble_sort_insanity(array3,5);
	bubble_sort_insanity(array4,10);

        dump_array(array1,5);
        dump_array(array2,10);
        dump_array(array3,5);
        dump_array(array4,10);

}