Golfed+Fast sorting in C
150 character

Quicksort.

/* 146 character.
 * sizeup 1.000; speedup 1.000; */
#define REC_SIZE    \
    sort(l, v+n-l); \
    n = l-v;

/* 150 character.
 * sizeup 1.027; speedup 1.038; */
#define REC_FAST  \
    sort(v, l-v); \
    n = v+n-l;    \
    v = l;

void sort(float* v, int n)
{
    while ( n &gt; 1 )
     {
       float* l = v-1, * r = v+n, x = v[n/2], t;
L:
       while ( *++l &lt; x );
       while ( x &lt; (t = *--r) );

       if (l &lt; r)
        {
          *r = *l; *l = t;
          goto L;
        }
       REC_FAST
     }
}


Compressed.

void sort(float* v, int n) {
while(n&gt;1){float*l=v-1,*r=v+n,x=v[n/2],t;L:while(*++l&lt;x);while(x&lt;(t=*--r));if(l&lt;r){*r=*l;*l=t;goto L;}sort(v,l-v);n=v+n-l;v=l;}
}