# 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】