有关快速排序的问题,有我自己写的代码,但是输出似乎并没有排序成功
有关快速排序的问题,有我自己写的代码,但是输出似乎并没有排序成功:
#include <iostream>
using namespace std;
int swap( int, int );
int Partition( int [], int, int );
void Quicksort( int [], int, int );
int main()
{
int i = 0;
int left = 0, right;
int a;
int A[32767];
while( cin > > a && a != 0 ) //输入0表示结束
{
A[i ++] = a;
}
right = i;
Quicksort( A, left, right );
for( int m = 0 ; m < right; m ++ )
cout < < A[ m ] < < " ";
return 0;
}
void Quicksort( int A[], int left, int right )
{
int s;
if( left < right )
{
s = Partition( A, left, right );
Quicksort( A, left, s - 1 );
Quicksort( A, s + 1, right );
}
}
int Partition(int A[], int left, int right )
{
int p = A[ left ];
int i = left;
intj = right + 1;
do {
do {
i ++;
}while( A[ i ] < p );
do {
j --;
}while( A[ j ] > p );
swap( A[ i ], A[ j ] );
}while( i < j );
swap ( A[ i ], A[ j ] );
swap ( A[ left ], A[ j ] );
return j;
}
int swap( int a, int b )
{
int temp;
temp = a;
a = b;
b = temp;
return 0;
}
请大家帮忙看看错在哪里了?多谢指点
[解决办法]
你的搞明白形参和实参的区别。像int swap( int a, int b ),a和b并没有
交换值,只是a的拷贝和b的拷贝互相交换了。
[解决办法]
int swap( int& a, int& b )
{
int temp;
temp = a;
a = b;
b = temp;
return 0;
}