快速排序(C++)
//
//Description:快速排序
//
#include <iostream>
using namespace std;
void quicksort(int A[], int low, int high);
int split(int A[], int low, int high);
void Swap(int &x, int &y);
void main()
{
cout << "-----------------快速排序法------------";
int A[] = { 1, 8, 9, 4, 5, 3 };
quicksort(A, 0, 5);
for (int i = 0; i <= 5; i++)
{
cout << A[i] << endl;
}
}
void quicksort(int A[], int low, int high)
{
int k;
if (low<high)
{
k = split(A, low, high);;
quicksort(A, low, k - 1);
quicksort(A, k + 1, high);
}
}
int split(int A[], int low, int high)
{
int k, i = low;
int x = A[low];
for (k = low + 1; k <= high; k++)//--------
{
if (A[k] <= x)
{
i = i + 1;
if (i != k)
{
Swap(A[i], A[k]);
}
}
}
Swap(A[low], A[i]);
return i;
}
void Swap(int &x, int &y)
{
int temp;
temp = x;
x = y;
y = temp;
}