int Partition(int a[],int p,int r)
{
int x = a[r];
int i = p - 1;
for(int j = p;j < r;j++)
{
if(a[j] <= x) //循环不变量。i index及之前的元素比哨兵小;j index 及 i+1 index 的元素比哨兵大
{
i = i + 1;
exchange(a+i,a+j);
}
}
exchange(a+i+1,a+r);
return (i + 1);
}
int RandomizedPartition(int a[],int p,int r)
{
int radom = rand();
int i = radom%(r-p+1)+p;
exchange(a+r,a+i);
return Partition(a,p,r);
}
void QuickSort(int a[],int p,int r)
{
queue<headrear_t> QS;
headrear_t QSArray = {r,p};
QS.push(QSArray);
while(!QS.empty())
{
QSArray = QS.front();
QS.pop();
p = QSArray.head;
r = QSArray.rear;
if(r > p)
{
int q = RandomizedPartition(a,p,r);
QSArray.head = p;
QSArray.rear = q - 1;
QS.push(QSArray);
QSArray.head = q+1;
QSArray.rear = r;
QS.push(QSArray);
}
}
}
int main()
{
int a;
int *sortArry;
srand((unsigned)time(NULL));
while(scanf_s("%d",&a) != EOF)
{
if(a <= MAXNUM && a != 0)
{
sortArry = new int[a];//(int *)malloc(sizeof(int)*a);
if(sortArry)
{
int i=0;
cout<<"==============Input Array:"<<"================"<<endl;
while(i < a)
{
*(sortArry+i) = rand();//scanf("%d",sortArry+i);
cout<<*(sortArry+i)<<" ";
i++;
}
cout<<endl;
QuickSort(sortArry,0,a-1);//InsertSort(sortArry,a);
i = 0;
cout<<"==============Output Array:"<<"================"<<endl;
while(i < a)
{
cout<<sortArry[i]<<" ";
i++;
}
cout<<endl;
}
}
}
return 0;
} int Partition(int a[],int p,int r)
{
int x = a[r];
int i = p - 1;
for(int j = p;j < r;j++)
{
if(a[j] <= x) //循环不变量。i index及之前的元素比哨兵小;j index 及 i+1 index 的元素比哨兵大
{
i = i + 1;
exchange(a+i,a+j);
}
}
exchange(a+i+1,a+r);
return (i + 1);
}
int RandomizedPartition(int a[],int p,int r)
{
int radom = rand();
int i = radom%(r-p+1)+p;
exchange(a+r,a+i);
return Partition(a,p,r);
}
void QuickSort(int a[],int p,int r)
{
queue<headrear_t> QS;
headrear_t QSArray = {r,p};
QS.push(QSArray);
while(!QS.empty())
{
QSArray = QS.front();
QS.pop();
p = QSArray.head;
r = QSArray.rear;
if(r > p)
{
int q = RandomizedPartition(a,p,r);
QSArray.head = p;
QSArray.rear = q - 1;
QS.push(QSArray);
QSArray.head = q+1;
QSArray.rear = r;
QS.push(QSArray);
}
}
}
int main()
{
int a;
int *sortArry;
srand((unsigned)time(NULL));
while(scanf_s("%d",&a) != EOF)
{
if(a <= MAXNUM && a != 0)
{
sortArry = new int[a];//(int *)malloc(sizeof(int)*a);
if(sortArry)
{
int i=0;
cout<<"==============Input Array:"<<"================"<<endl;
while(i < a)
{
*(sortArry+i) = rand();//scanf("%d",sortArry+i);
cout<<*(sortArry+i)<<" ";
i++;
}
cout<<endl;
QuickSort(sortArry,0,a-1);//InsertSort(sortArry,a);
i = 0;
cout<<"==============Output Array:"<<"================"<<endl;
while(i < a)
{
cout<<sortArry[i]<<" ";
i++;
}
cout<<endl;
}
}
}
return 0;
}