我有一個類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'。使用運營商< –