#include <limits>
void swap(int &ld, int &rd)
{
int tmp;
tmp = ld;
ld = rd;
rd = tmp;
}
int partition(int data[], int sdix, int edix)
{
//int t;
int medix;
int refval = data[sdix];
int lidx = sdix;
int ridx = edix;
while(lidx < ridx)
{
//printVec(data, 0, 9);
while((data[lidx] <= refval) && (lidx <= edix))
{
lidx++;
}
//lidx = lidx -1;
//cout << lidx << endl;
while((data[ridx] > refval) && ( ridx >= sdix))
{
ridx--;
}
//cout << ridx << endl;
if(lidx < ridx)
{
swap(data[lidx],data[ridx]);
}
//reflidx = sdix;
//refridx = edix;
//cin>> t;
}
medix = ridx;
swap(data[sdix],data[medix]);
return medix;
}
void quicksort(int data[], int sdix, int edix)
{
if(sdix == edix)
return;
int medix = 0;
if(sdix < edix){
//cout << " process index from " << sdix << " to " << edix << endl;
medix = partition(data,sdix,edix);
quicksort(data, sdix, (medix-1));
quicksort(data, (medix+1), edix);
}
}
快速排序
最新推荐文章于 2024-07-17 10:35:12 发布