引用 | 编辑
minieudaemon
2008-11-20 21:46 |
楼主
▼ |
||
x0
各位大大小弟看完书看想自己照着演算法依样画葫芦...但是 错出现逻辑错误...麻烦各位大大帮忙指正...并教导 小弟一下...因为今天晚上都在想这个问题... 先谢谢楼下大大....不过小弟刚刚照您的code去compiler 跟我原本的情况一样...就是compiler有过...但却无法跑出 排序后的结果.... // 快速排序法 #include <iostream> #include <cstdlib> #include <iomanip> #include <ctime> using namespace std; void Qsort(int *,int,int); //函数原型,传入 阵列,起点,终点 void showdata(int *,int); //印出阵列的值 int main() { srand(time(NULL)); cout << "请输入阵列大小:&quo .. 访客只能看到部份内容,免费 加入会员 x0
|
引用 | 编辑
teldeanmac85
2008-11-21 09:18 |
1楼
▲ ▼ |
复制程式
#include <iostream> #include <cstdlib> #include <iomanip> #include <ctime> using namespace std; void Qsort(int *,int,int,int); //函数原型,传入 阵列,起点,终点 void showdata(int *,int); //印出阵列的值 int main(int argc, char* argv[]) { srand(time(NULL)); cout << "请输入阵列大小:"; int size ; cin >> size; int *data = new int [size]; for(int i=0;i<size;i++) data[i]=rand()%99+1; //将阵列设值 1~100内 showdata(data,size); cout << "排序后..."<<endl; Qsort(data,0,size-1,size); showdata(data,size); delete [] data; system("pause"); return 0; } void showdata(int *d,int size) { for(int i=0;i<size;i++) cout<< setw(2)<< d[i] << " "; cout<<endl; return; } void Qsort(int *data,int left,int right,int MAX) { int temp = 0; int i,j,k; if(left < right){ k=data[left]; i=left; j=right+1; while(1){ while(i+1<MAX && k>data[++i]) ; // i 由左向右找 while(j-1>-1 && k<data[--j]); //j 由右向左找 if(i>=j) break; //两数交换 temp=data[i]; data[i]=data[j]; data[j]=temp; }//end while data[left] = data[j]; data[j] = k; Qsort(data,left,j-1,MAX); //递回呼叫 Qsort(data,j+1,right,MAX); } //end if } x1 |
引用 | 编辑
minieudaemon
2008-11-21 15:18 |
2楼
▲ ▼ |
先谢谢大大....不过小弟刚刚照您的code去compiler跟
我原本的情况一样...就是compiler有过...但却无法跑出 排序后的结果....^^ 我是用 dev c++ 5 beta 8 release (4.9.8.0) x0 |
引用 | 编辑
WindinCloud
2008-11-21 20:27 |
3楼
▲ ▼ |
下面是引用minieudaemon于2008-11-21 15:18(2楼)发表的 :你要不要说说你编译的环境 我有测试过他的程式是OK的唷~ ./quick.exe 请输入阵列大小:5 66 1 54 30 8 排序后... 1 8 30 54 66 x0 |
引用 | 编辑
minieudaemon
2008-11-21 20:46 |
4楼
▲ ▼ |
嗯...我刚刚再复制跑了一次...真的有排出来了....
不过我用的是同一个compiler...现在有排出来了... 我下午一样复制...却没有成功... 谢谢楼上两位大大...我要好好去研究一下两者 的差别了... ...看看自己那里出了问题... x0 |
引用 | 编辑
teldeanmac85
2008-11-21 21:09 |
5楼
▲ |
请问你的Error Message是什么?
我的环境是VC 6.0 int main(int argc, char* argv[]) // 改成int main(void) 试看看 我记得dev c++ 好像compile不会过~ x0 |