请大侠们解释下?

NewJerryj NewJerryj 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

#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百万个)时,发现运行不出结果,是不是递归深度超出最大深度的原因?
...全文
评论 11
收藏 已收藏
分享
返回顶部
NewJerryj
数据结构与算法 33,026 成员 35,334 内容