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.

Try making a swap function that only uses two variables, no temporary pointer or variable or anything. Just the two given integers’ values and some math.
Comment by dous — September 19, 2006 @ 1:38 am
yeah, i wish i could do that.
Comment by Joset Anthony Zamora — September 19, 2006 @ 11:10 pm
pwet
Comment by chris — July 15, 2008 @ 4:25 pm