我是遞回的新手,對此感到有些困惑這是我第一次為字串編碼快速排序,但我一直收到錯誤。有誰知道我在哪里搞砸了?
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
using namespace std;
void SwapValue(string &a, string &b)
{
string t = a;
a = b;
b = t;
}
void quicksort(vector<string> &list, int first, int end)
{
int l = first;
int r = end;
int pivot = ((first end) / 2);
while (l <= r)
{
while (list[l] <= (list[pivot]))
l;
while (list[r] >= (list[pivot]))
--r;
if (l <= r)
{
swap(list[l], list[r]);
l;
--r;
}
}
if (first <= r)
quicksort(list, first, r);
if (end >= l)
quicksort(list, l, end);
}
void print(vector <string> const &a)
{
cout << "[ ";
for(int i=0; i < a.size(); i )
{
cout << a[i] << ' ';
}
cout << ']';
}
int main()
{
vector<string> test = {"Bob", "Andrew", "Joe"};
quicksort(test, 0, test.size()-1);
print(test);
return 0;
}
我考慮過獲取字串中第一個字符的 ASCII 值,但我必須使用嵌套的 forloop 來檢索字符,這不會讓 QuickSort 變慢嗎?
uj5u.com熱心網友回復:
這個說法:
while (list[l] <= (pivot))
這甚至是如何編譯的?將字串與整數進行比較?
我懷疑你的意思是:
while (list[l] <= list[pivot])
宣告也需要類似的處理while (list[r] >= (pivot))。而且我認為您不想>=在右側使用。
while (i <= r)
這也不會編譯,因為i沒有定義。我懷疑你的意思是l,而不是“我”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/451614.html
標籤:C
下一篇:將模板型別轉換為ID
