訪客只能看到部份內容,免費 加入會員 或由臉書 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有過...但卻無法跑出排序後的結果....^^