访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容
#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 }
下面是引用minieudaemon于2008-11-21 15:18(2楼)发表的 : 先谢谢大大....不过小弟刚刚照您的code去compiler跟我原本的情况一样...就是compiler有过...但却无法跑出排序后的结果....^^