请大侠们解释下?
#include<iostream.h>
#include<windows.h>
#include<stdio.h>
#include <time.h>
#define NUM 100000
int Num[NUM];
void QuickSort(int left,int right,int FlagIndex)//,int SortNum[])
{
if(left<right)
{
int i=left,j=right,Flag=Num[FlagIndex];
while(i!=j)
{
while(j!=i)
{
if(Flag>Num[j])
{
Num[FlagIndex]=Num[j];
Num[j]=Flag;
FlagIndex=j;
i++;
break;
}
j--;
}
while(i!=j)
{
if(Flag<Num[i])
{
Num[FlagIndex]=Num[i];
Num[i]=Flag;
FlagIndex=i;
j--;
break;
}
i++;
}
}
QuickSort(left,i-1,left);//,SortNum);
QuickSort(i+1,right,i+1);//,SortNum);
}
return;
}
void main()
{
double dwOldTime,dwElapsed;
srand((unsigned)time(NULL));
cout<<"The random numbers are as follows:";
for(int i=0;i<NUM;i++)
{
Num[i]=rand()%100;
cout<<Num[i]<<" ";
}
cout<<endl<<endl<<endl;
dwOldTime=GetTickCount();
QuickSort(0,NUM-1,0); //,Num);
dwElapsed=GetTickCount()-dwOldTime;
cout<<"The sorted numbers are as follow:"<<endl;
for(i=0;i<NUM;i++)
cout<<Num[i]<<" ";
cout<<endl;
printf("It took %f to sort!\n",dwElapsed);
return;
}
以上代码是我写的用于测试快速排序算法的效率:随机生成N个数,放入数组,进行快速排序,显示出排序消耗的时间。
起初我使用局部变量数组Num[]来存放随机数字,发现超过100000后会有栈溢出,后来改进为使用全局数组。
但是当我把随机数的个数N设置为1000000(1百万个)时,发现运行不出结果,是不是递归深度超出最大深度的原因?
...全文


