Thursday, September 14, 2006

Bubble sort in C

I’m writing this for someone special. Hope this would help. This is at the same time a review of my past lessons. Assuming i,j and tmp are defined as integers, num[] as an array of integers, and SIZE as a constant.



for (i = 0; i < SIZE - 1; ++i)
for (j = SIZE - 1; j < i; --j)
if (num[j-1] > num[j]) {
tmp = num[j-1];
num[j-1] = num[j];
num[j] = tmp;
}

Here is another way of doing it. This is a demo on how the function works on a particular array of integers. a[] is the array of integers while n is the size of the array.



void swap(int *, int *);

void bubble(int a[], int n)
{
int i, j;

for (i = 0; i < n - 1; ++i)
for (j = n - 1; j > i; --j)
if (a[j-1] > a[j])
swap(&a[j-1], &a[j]);
}

void swap(int *p, int *q)
{
int tmp;

tmp = *p;
*p = *q;
*q = tmp;
}

If you are keen enough to observe, check that we can use the swap arguments presented below.



swap(a + i, a + j);

Getting the idea? Pointer arithmetic! God bless and good day.

No comments: