具体实现如下:
//以前的注释,还让它保留着
int partition(string &str,int lo,int hi)
{
int key = str[hi]; //以最后一个元素,data[hi]为主元
int i = lo - 1;
for(int j = lo; j < hi; j++) ///注,j从p指向的是r-1,不是r。
{
if(str[j] <= key)
{
i++;
swap(str[i], str[j]);
}
}
swap(str[i+1], str[hi]); //不能改为swap(&data[i+1],&key)
return i + 1;
}
//递归调用上述partition过程,完成排序。
void quicksort(string &str, int lo, int hi)
{
if (lo < hi)
{
int k = partition(str, lo, hi);
quicksort(str, lo, k - 1);
quicksort(str, k + 1, hi);
}
}
//以前的注释,还让它保留着
int partition(string &str,int lo,int hi)
{
int key = str[hi]; //以最后一个元素,data[hi]为主元
int i = lo - 1;
for(int j = lo; j < hi; j++) ///注,j从p指向的是r-1,不是r。
{
if(str[j] <= key)
{
i++;
swap(str[i], str[j]);
}
}
swap(str[i+1], str[hi]); //不能改为swap(&data[i+1],&key)
return i + 1;
}
//递归调用上述partition过程,完成排序。
void quicksort(string &str, int lo, int hi)
{
if (lo < hi)
{
int k = partition(str, lo, hi);
quicksort(str, lo, k - 1);
quicksort(str, k + 1, hi);
}
}