问题:文本data.txt中存在着1万个正整数数据,请利用你所了解的至少两种排序算法对此数据进行排序,并记录每种排序算法所消耗的时间。(以下采用得是选择排序和堆排序)
要求:
1)从文件data.txt中读出数据,存放在一维数组a中;
2)请选择执行两种排序算法(同一种类型),并进行执行时间上的比较。
int a[100]; //全局数组
const int n = 100;//一万个数据
//函数声明
void ReadArray(char*filename); //读文件
double SelectSort(); //选择排序
double HeapSort(); //堆排序
//排序函数
void SeSort(int *a,int n); //选择排序
void PercDown(int *a, int p, int N);
void HepSort(int *a, int n); //堆排序
void Print(int *a,int n);
void swap(int *p, int *q);
int main(){
double t_sort=0,t_sum_in=0,t_sum_sh=0,t_sum_bb=0,t_sum_qc=0,t_sum_ss=0,t_sum_heap=0;
int cnt; //为了让时间更准确,求3次的平均值
cnt = 3;
while(cnt--){
t_sum_ss += SelectSort();
}
printf("选择排序:%lfms\n",t_sum_ss/3);
cnt = 3;
while(cnt--){
t_sum_heap += HeapSort();
}
printf("堆排序:%lfms\n",t_sum_heap/3);
return 0;
}
//函数实现
//将数据读到数组a中
void ReadArray(char*filename){
FILE *fp;
if(!(fp = fopen(filename,"r"))){
printf("Cannot open file\n");
exit(0);
}
int i = 0;
while(!feof(fp)){
fscanf(fp,"%d\n",&a[i++]);
}
fclose(fp);
}
//以选择排序算法为例,示例排序算法调用及时间计算
double SelectSort(){
ReadArray("D://程序编写//shiyan7//data.txt");
clock_t begin,end;
begin = clock();
SeSort(a,n); //调用选择排序算法
end = clock();
return (double)(end - begin);
}
void swap(int p,int q)
{
int t;
t=p;p=q;q=t;
}
void SeSort(int a[ ],int n)
{
int i,j,min;
for(i=0;i<n-1;i++){
min=i;
for(j=i+1;j<n;j++)
if(a[j]<a[min])
min=j;
Swap(&a[i],&a[min]);
}
}
谷歌搜下呗,刚搜了下,大概这类错误是根本编译都没通过,需要改变编译方式啥的?搜搜吧。