#include <common.h>
//PARTITION
int PARTITION(int *A, int p, int r)
{
int x = A[r];
int i = p - 1;
int j = p;
int tmp = 0;
for (j = p; j < r; ++j) {
if (A[j] <= x) {
++i;
tmp = A[i];
A[i] = A[j];
A[j] = tmp;
}
}
tmp = A[i+1];
A[i+1] = A[r];
A[r] = tmp;
return i+1;
}
//QUICKSORT
void QUICKSORT(int *A, int p, int r)
{
int q;
if (p < r) {
q = PARTITION(A, p, r);
QUICKSORT(A, p, q-1);
QUICKSORT(A, q + 1, r);
}
}
void main()
{
int A[] = {8, 7, 10, 100, 88, 99, 0, 66};
int i = 0;
QUICKSORT(A, 0, sizeof(A)/sizeof(int) - 1);
for (i = 0; i < sizeof(A)/sizeof(int); ++i) {
TRACE("%d\t", A[i]);
}
TRACE("\n");
system("pause");
}
算法导论C语言实现: 快速排序
最新推荐文章于 2024-01-31 19:36:49 发布