Assumption: All numbers in the array are distinct.
The bad ones (Ο(N2)):
void sort(double A[], int N)
{
    for(i = 0; i < N; i++) {
        for(j = 0; j < N-1; j++) {
            if (A[j] > A[j+1])
                swap(A, j, j+1);
        }
    }
}
void sort(double A[], int N)
{
    for(i = 1; i < N; i++) {
        temp = A[i];
	for(j = i-1; j >= 0 && A[j] > temp; j--) {
                A[j+1] = A[j];
        }
        A[j+1] = temp;
        
    }
}
void sort(double A[], int N)
{
    for(i = 0; i < N - 1; i++) {
        smallest = i;
	for(j = i+1; j < N; j++) {
            if (A[j] < A[smallest])
                smallest = j;
        }
        swap(A, i, smallest);
    }
}
The good ones (Ο(NlogN)):
void sort(double A[], int low, int high)
{
    if (low >= high)
        return;
    pivot = low;
    i = low + 1;
    j = high;
    // throw smaller ones to pivot's left
    // and larger ones to pivot's right
    while (i <= j) {
        if (A[i] < A[pivot]) {
            swap(A, i, pivot);
            pivot = i;
            i = pivot + 1;
        } else {
            swap(A, i, j);
            j = j - 1;
        }
    }
    // sort the pile with the smaller numbers
    sort(A, low, pivot-1);
    // sort the pile with the larger numbers
    sort(A, pivot+1, high);
}
void sort(double A[], int low, int high)
{
    if (low >= high)
        return;
    // divide the pile into two piles
    mid = (low + high)/2
    // sort the left pile
    sort(A, low, mid);
    // sort the right pile
    sort(A, mid+1, high);
    // merge the two sorted piles into one sorted pile
    double B[high-low+1];
    i = low;
    j = mid+1;
    k = 0;
    while (i <= mid && j <= high) {
        if (A[i] < A[j]) {
            B[k] = A[i];
            i++;
        } else {
            B[k] = A[j];
            j++;
        }
        k++;
    }
    while (i <= mid) {
        B[k] = A[i];
        i++; k++;
    }
    while (j <= high) {
        B[k] = A[j];
        j++; k++;
    }
    for(i = low, k = 0; i <= high; i++, k++)
        A[i] = B[k];
}
void sort(double A[], int N)
{
    // max heap insert
    for(i = 1; i < N; i++) {
        j = i;
        parent = (i-1)/2;
        while (j > 0 && A[j] > A[parent]) {
            swap(A, j, parent);
            j = parent;
            parent = (j-1)/2;
        }
    }
    // extract from max heap
    // so the numbers are sorted from smallest to largest
    bool stop;
    for(i = N-1; i > 0; i--) {
        swap(A, 0, i);
        j = 0;
        child = j*2+1;
        stop = (child >= i);
        while (!stop) {
            if (child+1 < i && A[child] < A[child+1])
                child = child+1;
            if (A[j] < A[child]) {
                swap(A, j, child);
                j = child;
                child = j*2+1;
                stop = (child >= i);
            } else {
                stop = true;
            }
        }
    }
}
void sort(double A[], int N)
{
    gap = N/2;
    while (gap >= 1) {
        for(i = gap; i < N; i++) {
            j = i;
            k = j - gap;
            while (k >= 0 && A[j] < A[k]) {
                swap(A, j, k);
                j = k;
                k = j - gap;
            }
        }
        gap = gap/2;
    }
}
The unconventional ones:
void sort(int A[], int N)
{
    int smallest = min(A); // the smallest number in A
    int largest = max(A); // the largest number in A
    int size = largest-smallest+1;
    bool B[size];
    for(i = 0; i < size; i++)
        B[i] = false;
    for(i = 0; i < N; i++) {
        B[A[i]-smallest] = true;
    }
    i = 0;
    for(j = 0; j < size; j++) {
	if (B[j]) {
            A[i] = j+smallest;
            i++;
        }
    }
}
void sort(int A[], int N)
{
    int largest = max(A); // the largest number in A
    Queue buckets[10];
    factor = 1;
    while (factor < largest) {
        for(i = 0; i < N; i++) {
            buckets[A[i]/factor%10].enqueue(A[i]);
        }
        i = 0;
        for(j = 0; j < 10; j++) {
            while (!buckets[j].isEmpty()) {
                A[i] = buckets[j].dequeue();
                i++;
            }
        }
        factor = factor * 10;
    }
    
}