回溯法实现多个经典算法
源代码在线查看: 快速排序算法.cpp
//快速排序递归算法
#include
#include
int QKPass(int r[], int low, int high)
{
int k0,Pkey=r[low];
r[0]=r[low];
while(low {
while(low=Pkey) --high;
k0=r[low];
r[low]=r[high];
r[high]=k0;
while(low k0=r[low];
r[low]=r[high];
r[high]=k0;
} //while
r[low]=r[0];
return low; //返回枢轴所在位置
} //QKPass
void QKSort(int r[], int s, int t)
{
//对记录序列L.r[s..t]进行快速排序
if (s {
//长度大于1
int pos=QKPass(r, s, t);
//对 L.r[s..t] 进行一次划分
QKSort(r, s, pos-1);
//对低子序列递归排序, pos是枢轴位置
QKSort(r, pos+1, t); //对高子序列递归排序
} //if
} //QKSort
void main()
{
int n;
int i,*r;
cout cin>>n;
r=new int[n+1];
cout for(i=1; i cin>>r[i];
}
QKSort(r, 1, n);
cout for(i=1; i cout }