求大神看一下,好像栈溢出了,但就是解决不了
#include<iostream>using namespace std;
int PARTITION(int A[], int begin, int end) {
int mark = A;
int i = begin - 1;
int j = end;
int t;
for (;;) {
while (A[++i] < mark);
while (A[--j] > mark)
{
if (j == 1)break;
}
if (i >= j) break;
t = A;
A = A;
A = t;
}
t = A;
A = A;
A = t;
return i;
}
void QUICKSORT(int A[], int begin, int end) {
int sign;
if (end <= 1)return;
sign = PARTITION(A, begin, end);
QUICKSORT(A, begin, sign - 1);
QUICKSORT(A, sign + 1, end);
}
int main() {
int A = { 2,3,6,4,3,2,7,5 };
QUICKSORT(A, 0,7);
for (int i = 0; i <=7; i++) {
cout << A << " ";
}
return 0;
} 为什么要浪费那么多时间在找基准点?那两个 while() #include<iostream>
using namespace std;
void swap(int &x, int &y)
{
int t = x;
x = y;
y = t;
}
int PARTITION(int A[], int begin, int end) {
int pivot = A;
int i, j = begin, t;
for (i = begin + 1; i <= end; i++) {
if (A < pivot) {
swap(A[++j], A);
}
}
swap(A, A);
return j;
}
void QUICKSORT(int A[], int begin, int end) {
if (begin >= end)
return;
int p = PARTITION(A, begin, end);
QUICKSORT(A, begin, p - 1);
QUICKSORT(A, p + 1, end);
}
int main() {
int A = {2,3,6,4,3,2,7,5};
QUICKSORT(A,0,7);
for (int i = 0; i <=7; i++) {
cout << A << " ";
}
return 0;
} 本帖最后由 回访三生 于 2018-10-28 10:13 编辑
你的代码最简单的解决方法是把31行
if (end <= 1)return;
改成:
if (end <= begin)
{
return;
}
页:
[1]