複製程式
#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
}