DN> JP> That *is* genine Bubble Sort.
DN> No, it is a selection sort, with a variant of [unnecessarily]
DN> exchanging prior to completing the current selection.
This might clear it all up, with or without contact lenses! :)
/* bbl_slct.c PUBLIC DOMAIN part 1 of 2 */
#include
#include
#include
void bubblesort(int *array, int elements)
{
int bubble, dubble, toil, trouble, reverse;
reverse = (elements < 0) ? 1 : 0;
elements = reverse ? -elements : elements;
toil = elements - 1;
if(reverse)
{
do {
for(trouble = bubble = 0; bubble < toil; bubble++)
{
if(array[bubble] < array[bubble + 1])
{
dubble = array[bubble];
array[bubble] = array[trouble = bubble + 1];
array[bubble + 1] = dubble;
}
}
} while(trouble);
}
else
{
do {
for(trouble = bubble = 0; bubble < toil; bubble ++)
{
if(array[bubble] > array[bubble + 1])
{
dubble = array[bubble];
array[bubble] = array[trouble = bubble + 1];
array[bubble + 1] = dubble;
}
}
} while(trouble);
}
}
void selectionsort(int *array, int elements)
{
int outer, inner, swap, tmp, end, reverse;
reverse = (elements < 0) ? 1 : 0;
elements = reverse ? -elements : elements;
end = elements - 1;
if(reverse)
{
for(outer = 0; outer < end; outer++)
{
swap = outer;
for(inner = outer; inner < elements; inner++)
if(array[swap] < array[inner])
swap = inner;
if(swap > outer)
{
tmp = array[outer];
array[outer] = array[swap];
array[swap] = tmp;
}
}
}
else
{
for(outer = 0; outer < end; outer++)
{
swap = outer;
for(inner = outer; inner < elements; inner++)
if(array[swap] > array[inner])
swap = inner;
if(swap > outer)
{
tmp = array[outer];
array[outer] = array[swap];
array[swap] = tmp;
}
}
}
}
/* end bbl_slct.c PUBLIC DOMAIN part 1 of 2 */
> ] You're trying to make me paranoid, but I'm on to your tricks
---
---------------
* Origin: *YOPS ]I[* 8.4 GIG * RA/FD/FE * Milwaukee, WI (1:154/750)
|