4
我只是試圖在字符串上實現Quicksort,但它不起作用。輸出與輸入相同,而不是已排序的字符串。我檢查了很多次,但無法找到任何錯誤。請幫助我。QuickSort程序不工作
下面是快速排序功能。
void quicksort(string str1, int si, int ei)
{
if (si < ei)
{
int pi = partition(str1, si, ei);
quicksort(str1, si, pi-1);
quicksort(str1, pi+1, ei);
}
}
分區功能。
int partition(string str2, int si, int ei)
{
int i = si-1;
char x = str2[ei];
int j;
for (j = si ; j <= ei-1 ; j++)
{
if (str2[j] <= x)
{
i++;
exchange(&str2[i], &str2[j]);
}
}
exchange(&str2[ei], &str2[i+1]);
return i+1;
}
和交換功能。
void exchange(char *a, char *b)
{
char temp;
temp = *a;
*a = *b;
*b = temp;
}
主要功能如下。
int main()
{
int l1;
string str;
cout << "Enter the string to be sorted";
cin >> str;
l1 = str.length();
quicksort(str, 0, l1-1);
cout << str;
return 0;
}
倒引號是行內代碼格式化。在每行的開始處使用4個空格代碼塊(加上額外的空格用於進一步縮進)。 – crashmstr
你爲這些功能寫了什麼測試? –
我要求用戶輸入字符串並且沒有硬編碼測試用例。我嘗試輸入字符串,如「dbca」,「adbc」,甚至數字,如「1243」@AlanStokes – Sarthak