首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

有关快速排序的有关问题,有小弟我自己写的代码,但是输出似乎并没有排序成功

2012-03-23 
有关快速排序的问题,有我自己写的代码,但是输出似乎并没有排序成功有关快速排序的问题,有我自己写的代码,

有关快速排序的问题,有我自己写的代码,但是输出似乎并没有排序成功
有关快速排序的问题,有我自己写的代码,但是输出似乎并没有排序成功:
#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;
}

热点排行