频道栏目
首页 > 资讯 > 其他综合 > 正文

使用两种不同的算法对十万条数据进行排序

17-09-23        来源:[db:作者]  
收藏   我要投稿

*问题描述:使用两种不同的算法对十万条数据进行排序

*输入描述:含有十万条数据的文档

*程序输出:见程序运行截屏

*/

[cpp] view plain copy

#include

#include

#include

#define MAXNUM 100000

void selectsort(int a[], int n)

{

int i, j, k, tmp;

for(i = 0; i < n-1; i++)

{

k = i;

for(j = i+1; j < n; j++)

{

if(a[j] < a[k])

k = j;

}

if(k != j)

{

tmp = a[i];

a[i] = a[k];

a[k] = tmp;

}

}

}

int main()

{

int x[MAXNUM];

int n = 0;

double t1,t2;

FILE *fp;

fp = fopen("numbers.txt", "r");

if(fp==NULL)

{

printf("打开文件错!请下载文件,并将之复制到与源程序文件同一文件夹下。\n");

exit(1);

}

while(fscanf(fp, "%d", &x[n])!=EOF)

n++;

printf("数据量:%d, 开始排序....", n);

t1=time(0);

selectsort(x, n);

t2=time(0);

printf("用时 %d 秒!", (int)(t2-t1));

fclose(fp);

return 0;

}

使用快速排序对数据进行排序

[cpp] view plain copy

#include

#include

#include

#define MAXNUM 100000

void quicksort(int data[],int first,int last)

{

int i, j, t, base;

if (first>last)

return;

base=data[first];

i=first;

j=last;

while(i!=j)

{

while(data[j]>=base && i j--;

while(data[i]<=base && i i++;

/*交换两个数*/

if(i {

t=data[i];

data[i]=data[j];

data[j]=t;

}

}

data[first]=data[i];

data[i]=base;

quicksort(data,first,i-1);

quicksort(data,i+1,last);

}

int main()

{

int x[MAXNUM];

int n = 0;

double t1,t2;

FILE *fp;

fp = fopen("numbers.txt", "r");

if(fp==NULL)

{

printf("打开文件错!请下载文件,并将之复制到与源程序文件同一文件夹下。\n");

exit(1);

}

while(fscanf(fp, "%d", &x[n])!=EOF)

n++;

printf("数据量:%d, 开始排序....", n);

t1=time(0);

quicksort(x, 0, n-1);

t2=time(0);

printf("用时 %d 秒!", (int)(t2-t1));

fclose(fp);

return 0;

}

 
相关TAG标签
上一篇:解决oracle数据库删除sql语句时出现^H字样的问题
下一篇:oracle环境变量配置
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站