求助,谁帮忙给我讲解一下这个程序
#include <stdio.h> #include <time.h>
#include <stdlib.h>
void RandomizedPartition(int *data,int x,int y,int *temp) // 这个函数看不懂。帮忙讲解一下。
{
int p,q,m,i=x;
if(y-x>1)
{
m = x+(y-x)/2;
p = x;
q = m;
RandomizedPartition(data,x,m,temp);
RandomizedPartition(data,m,y,temp);
while
(p<m||q<y)
{
if
(q>=y||(p<m&&data[p]<data[q]))
{
temp[i++] = data[p++];
}
else
{
temp[i++] = data[q++];
}
}
for
(i=x;i<y;i++)
data[i] = temp[i];
}
}
void QuickSort(int *data,int x,int y)
{
int p=x,q=y-1,temp;
while
(p<q)
{
while
(q>p&&data[q]>=data[p])
q--;
if(q>p)
{
temp = data[p],data[p] = data[q],data[q] =temp;
p++;
}
while
(q>p&&data[p]<=data[q])
p++;
if
(p<q)
{
temp = data[p],data[p] = data[q],data[q] =temp;
q--;
}
if
(p==q)
{
QuickSort(data,x,p);
QuickSort(data,p+1,y);
}
}
}
int main()
{
int data[10],i;
int temp[10];
srand(time(NULL));
for
(i=0;i<10;i++)
{
data[i] = rand()%100;
}
printf("排序之前:");
for
(i=0;i<10;i++)
{
printf("%d ",data[i]);
}
printf("\n");
QuickSort(data,0,10);
printf("排序之后:");
for
(i=0;i<10;i++)
{
printf("%d ",data[i]);
}
printf("\n");
}