我有一个类WordList包含一个字符串(单词)的向量。矢量长度为88994,我试图用快速排序对它进行排序。当我运行我的代码时,它将它分类得很好,但是一些元素看起来不合适。例如,一切都按照字母顺序排列,但一个词将不合适......这会发生几次。有什么我没有执行的权利?QuickSort扮演好笑
void WordList::quickSort(int start, int end){
if(start < end){
int pivot = partition(start, end);
quickSort(start, pivot-1);
quickSort(pivot+1, end);
}
}
int WordList::partition(int start, int end){
int pivot = end;
int leftList = start-1;
for(int j = start; j < (end - 1); j++){
if(LoWords[j].compare(LoWords[pivot]) <= -1){
leftList++;
string temp = LoWords[leftList];
LoWords[leftList] = LoWords[j];
LoWords[j] = temp;
}
}
string anotherTemp = LoWords[leftList+1];
LoWords[leftList+1] = LoWords[end];
LoWords[end] = anotherTemp;
return leftList+1;
}
除非你正在执行quicksort作为作业或其他学习任务,否则应该使用标准库提供的'std :: sort'。 – crashmstr
如果您使用'std :: string's,则不需要'compare'。使用运营商< –