在看算法导论的第七章,介绍的是快速排序。快速排序使用分治策略来把待排序对象分成两个子对象,再对两个子对象进行递归,进而合并得到正确的排序结果
#include<iostream>
using namespace std;
void Swap(int *A, int i, int j)
{
int temp;
temp = A[i];
A[i] = A[j];
A[j] = temp;
}
int Partition(int *A, int p, int r)
{
int x = A[r];
int i = p - 1;
int j = p;
while(j < r)
{
if(A[j] <= x)
{
i = i + 1;
Swap(A,i,j);
}
j++;
}
Swap(A,i+1,r);
return i+1;
}
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,p+1,r);
}
}
int main()
{
int array[] = {2,26,45,76,97,36,26,87,4,3,1,5,9,8,6,7,10,65,43,85};
QuickSort(array,0,19);
for(int i = 0; i < 20; i++)
cout << array[i] << " ";
cout << endl;
return 0;
}