Hello!!
I want to modify the upper bubblesort in order to have a circular behaviour.Code:void bubblesort(int n, double *x)
{ int i, j;
for (i=1 ; i<=n-1 ; i++)
for (j=n-1 ; j>=i ; j--)
if (x[j-1] > x[j])
swapd(&x[j-1], &x[j]);
}
I tried this but it doesn't seem to work right:
In both cases swap is:Code:void bubblesort(int n, double *x, int point)
{
int i,j;
for(i=point+1 ; i!=point-1 ; i = (i+1)%n)
for(j=point-1 ; j!=i ; j = ((j<=0) ? (n-1) : (j-1)))
if (x[((j<=0) ? (n-1) : (j-1))] > x[j])
swap(&x[((j<=0) ? (n-1) : (j-1))], &x[j]);
Variable point, is the point from where I want to start sorting my array, from the element x[point] till x[point-1].Code:void swapd(double *a, double *b)
{ double temp;
temp = *a;
*a = *b;
*b = temp; }
As u can see when point is equal to zero the circular bubblesort should work as the typical one (1st code example).
BUT mine doesn't work :( ..
Does anybody know what is wrong with it?
Thanks in advance!!