【发布时间】:2015-01-03 03:48:52
【问题描述】:
我在 C++ 中实现快速排序时遇到问题。 我不确定为什么我会收到“分段错误(核心转储)”错误... 这是我的代码。任何帮助将不胜感激。谢谢! 我也不太确定基本情况是什么,以及如何在需要组合时将左数组、枢轴和右数组放在最后一个数组中。
void printVector(vector<int> ar, int ar_size);
void quickSort(vector <int> ar, int ar_size) {
int pivot = ar[0];
vector <int> left(ar_size);
int leftcount = 0;
vector <int> right(ar_size);
int rightcount = 0;
for(int i = 0; i < ar_size; i++){
if(ar[i] < pivot){
left.push_back(ar[i]);
leftcount++;
}
if(ar[i] >= pivot){
right.push_back(ar[i]);
rightcount++;
}
}
if(ar_size <= 2){
printVector(left, leftcount);
cout << pivot;
printVector(right, rightcount);
}
if(leftcount>0){
quickSort(left, leftcount);
}
if(rightcount>0){
quickSort(right, rightcount);
}
}
void printVector(vector<int> ar, int ar_size){
for(int i = 0; i<ar_size; i++){
cout << ar[i] << " ";
}
}
int main(void) {
vector <int> _ar;
int _ar_size;
cin >> _ar_size;
for(int _ar_i=0; _ar_i<_ar_size; _ar_i++) {
int _ar_tmp;
cin >> _ar_tmp;
_ar.push_back(_ar_tmp);
}
quickSort(_ar, _ar_size);
return 0;
}
【问题讨论】:
-
使用调试器会告诉你问题出在哪里