首页 > 应用开发 > > C++ 快速排序bug查找
include<iostream>
include<vector>
include<ctime>
using namespace std;
void print(const vector
{
for (auto ele : vec)
{
cout << ele << " ";
}
cout << endl;
}
//<5>快速排序
void quickSort(vector
{
// 假色vec 原始: 4 2 8 0 5 7 1 3 9
int i = start;
int j = end;
//基准数
int temp = vec[start]; // temp = 4 // [] 2 8 0 5 7 1 3 9
if (i < j)
{
while (i < j)//循环退出的时候 i = j
{
//从右向左找到比i指向元素小的元素来填上面的[]
while (i < j && vec[j] >= temp)
{
j--;
}//这里找到了3,下面准备入坑(上面的[] )
if (i < j)
{
vec[i] = vec[j];// 3 2 8 0 5 7 1 [] 9
i++;//准备从左向右找一个比基准数大的数
}
//从左向右找到比i指向元素大的元素来填上面的[]
while (i < j && vec[i] < temp)
{
i++;
}//这里找到了8,下面准备入坑
if (i < j)
{
vec[j] = vec[i];// 3 2 [] 0 5 7 1 8 9
j--;
}
}
//此时将基准数放到 i的 位置(此时 i = j; 且左边都比vec[i]小,右边都比vec[i]大)
vec[i] = temp; //3 2 1 0 4 5 8 9
quickSort(vec, start, i - 1); //递归,对左边
quickSort(vec, i + 1, end); //递归,对右边
}
}
int main()
{
//vector
vector
print(vec);
int start = 0; int end = vec.size() - 1;
quickSort(vec, start, end);
print(vec);
return 1;
}
【问题:】main()函数第一行案例(以及绝大数案例)都可顺利排序,打印输出
第二行案例,报错,数组越界,实在无解,求解大神帮忙debug下。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4635/viewspace-3130927/ ,如需转载,请注明出处,否则将追究法律责任。