其实本来是用C++写的代码,后来排序数字数量达到百万级别的时候,本着提高输出效率的原则,输出换成了printf,于是代码变成C了...
#include<stdio.h>
#include<cstdlib>
#include<ctime>
using namespace std;
//******函数原型******
void quicksort(int left,int right);
void initialize();
//********************
//******声明数组******
int num[2000000];
int main()//主函数
{
initialize();//初始化数组
quicksort(0,1999999);//快速排序
for(int n=0;n<2000000;n++)//循环输出
{
printf("%d",num[n]);
printf(" ");
}
return 0;
}
void initialize()//定义一个用来初始化数组的函数,用随机数给数组赋值
{
for(int m=0;m<2000000;m++)
{
srand(time(0)+m);//置随机数种子
num[m]=rand()%50000;//取随机数
}
}
void quicksort(int left,int right)//快速排序算法的函数
{
if(left>right)
{
return;
}
int temp=num[left];
int i,j;
i=left;
j=right;
int exchange;
while(i!=j)
{
while(num[j]>=temp && i<j)
{
j--;
}
while(num[i]<=temp && i<j)
{
i++;
}
if(i<j)
{
exchange=num[i];
num[i]=num[j];
num[j]=exchange;
}
}
num[left]=num[i];
num[i]=temp;
quicksort(left,i-1);//函数的递归调用
quicksort(i+1,right);
}
运行结果太恐怖了,我还是贴个100个数字的运行结果吧
新技能,get√!