# Python
import random

def QuickSort(arr):
        if len(arr) <= 1:
                return arr
        pivot   = arr[-1]
        pivots = [ i for i in arr if i==pivot ]
        left      = QuickSort([ i for i in arr if i<pivot ])
        right   = QuickSort([ i for i in arr if i>pivot ])
        return left + pivots + right

arr = [random.randint(0,100) for i in xrage(20) ]
new_arr = QuickSort(arr)
print arr
print new_arr


//C
#include <stdio.h>

int partition(int A[], int L, int H)
{
    int key = A[L];
    while (L < H)
    {
        while (L < H && A[H] >= key)
            H--;
        {
            int tmp;

            tmp = A[L];
            A[L] = A[H];
            A[H] = tmp;
        }
        while (L < H && A[L] <= key)
            L++;
        {
            int tmp;

            tmp = A[L];
            A[L] = A[H];
            A[H] = tmp;
        }

    }

    return L;

}

void Qsort(int A[], int L, int H)
{
    int pivot = partition(A, L, H);

    if (L < H)
    {

        Qsort(A, L, pivot - 1);
        Qsort(A, pivot + 1, H);
    }

}

int main(int argc, char const *argv[])
{
    int A[] = {6, 8, 9, 1, 2, 5, 4, 7, 3, 18};
    int num = sizeof(A) / sizeof(int);

    Qsort(A, 0, num - 1);

    int i;
    for (i = 0; i < num; ++i)
    {
        printf("%d\t", A[i]);
    }
    return 0;
}


备份地址: 【Pythonic QuickSort