快速排序程序不起作用
QuickSort program not working
我只是想在字符串上实现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);
}
}
Partition函数。
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;
}
quicksort
按值取str1
,然后递归地将其复制到其子问题中。每个实例化都在一个独立的、不相关的字符串上操作,并对其本地副本进行修改。
您需要通过引用传递str
:
void quicksort(string& str1, int si, int ei)
与partition
:相同
int partition(string& str2, int si, int ei)
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- sigwait() 在多线程程序中不起作用
- 为什么使用数组元素查找最大数字的程序不起作用?
- C++实用程序::转换在静态链接库中不起作用
- Cuda 基本程序 (将值写入矩阵和 std:cout 不起作用) ;主功能不启动
- 视窗 10 :笔(手写笔)在 MFC 应用程序上不起作用
- win32 滚动条在 C/C++ 程序中不起作用
- 用于拆分空格字符串的程序不起作用
- 反转一个数字程序不起作用,为什么?
- C++ 程序在代码块 IDE 中不起作用
- 该程序将.csv文件中的一系列单词放入数组中,然后随机生成句子.但它不起作用
- 程序在CLion IDE中工作,但exe不起作用
- Opencv在2013年第5季度不起作用.应用程序总是在窗口中崩溃
- C++从句子中删除给定字符的程序不起作用
- C ++ GCC 内联程序集似乎不起作用
- 为什么当我选择>250000个采样点时,程序不起作用?
- 任务计划程序库的预处理不起作用 - 多定义错误
- C 为什么我的程序循环和"if-statements"不起作用?
- try() 和 catch() 不起作用;程序崩溃,从不执行 catch() 块
- Cin 执行不起作用 (程序.exe <文件与数据.txt)