#include<iostream>
using namespace std;
#define SIZE 21
typedef int Sqlist[SIZE];
int Partition(Sqlist &L,int low,int high)
{
int key;
L[0] = L[low];
key = L[low];
while(low < high)
{
while(low<high && L[high]>key)
{
--high;
}
L[low] = L[high];
while(low<high && L[low] < key)
{
++low;
}
L[high] =L[low];
}
L[low] = L[0];
return low;
}
void Qsort(Sqlist &L,int low,int high)
{
int piv;
if(low < high)
{
piv = Partition(L,low,high);
Qsort(L,low,piv-1);
Qsort(L,piv+1,high);
}
}
void QuickSort(Sqlist &L)
{
Qsort(L,1,7);
}
void main()
{
Sqlist L= {0,49,38,65,97,76,13,27};
QuickSort(L);
for(int i=1;i<8;++i)
cout<<L[i]<<" ";
cout<<endl;
}
分析:递归排序随着数据的增多,执行次数的增加,优化效果越来越好,但是递归调用的次数也越来越多,而且递归函数有时候还会降低函数的执行速度。