TOP

使用两种不同的算法对十万条数据进行排序
2017-09-25 08:59:05 】 浏览:10228
Tags:使用 不同 算法 十万条 数据 进行 排序

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

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

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

*/

[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;

}

 


使用两种不同的算法对十万条数据进行排序 https://www.cppentry.com/bencandy.php?fid=57&id=119156

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇mysql先分组再排序的sql语句实现 下一篇数据库三大范式总结