The
comb sort is a quick little sorting
algorithm: nearly as fast as
quick sort but without the intensive stack usage that comes from
quick sort being
recursive and much, much, much easier to
program (that
quick sort is a
bitch)
The sort goes pretty much like this:
You have a certain "gap", let's call it G, which starts a little below the length of the array, which we'll call L. You then iterate through the array, from I = 1 TO L-G (1 being the first position of the array), comparing the element at position I with the element at I+G. You then shrink G by a certain factor and iterate through the array again. You continue shrinking and iterating until the gap, G, is 1.
Here's the code in C (because who can read that generic algorithm language?):
#define SHRINK_FACTOR 0.6
void combsort(int *a, int len)
{
int i, inc;
double dinc = (double)len;
do {
dinc *= SHRINK_FACTOR;
inc = (int)dinc;
for(i = 0; i < len-inc; i++)
if(a[i] > a[i+inc])
swap(a[i], a[i+inc]);
} while(inc > 1);
}