以下内容包括:快速排序以及快速排序随机化版本
#include <iostream>
using namespace std;
int partition(int A[], int p, int r)
{
int x = A[r];
int i = p - 1;
for (int j = p; j < r; ++j)
{
if (A[j] <= x)
{
++i;
swap(A[i], A[j]);
}
}
swap(A[i+1], A[r]);
return i + 1;
}
void quick_sort(int A[], int p, int r)
{
if (p < r)
{
int q = partition(A, p, r);
quick_sort(A, p, q - 1);
quick_sort(A, q + 1, r);
}
}
int randdomized_partition(int A[], int p, int r)
{
int i = p + rand() % (r - p + 1);
swap(A[r], A[i]);
return partition(A, p, r);
}
void randomized_quick_sort(int A[], int p, int r)
{
if (p < r)
{
int q = randdomized_partition(A, p, r);
randomized_quick_sort(A, p, q - 1);
randomized_quick_sort(A, q + 1, r);
}
}
int main()
{
int A[] = {2, 8, 7, 1, 3, 5, 6, 4};
int size = sizeof(A) / sizeof(A[0]);
//quick_sort(A, 0, size - 1);
randomized_quick_sort(A, 0, size - 1);
for (int i = 0; i < size; ++i)
{
cout << A[i] << " ";
}
cout << endl;
return 0;
}