|
发表于 2013-5-16 10:28:41
|
显示全部楼层
本帖最后由 我是师兄 于 2013-5-16 15:06 编辑
- #include <stdio.h>
- #include <time.h>
- #include <string.h>
- #include <stdlib.h>
- typedef struct
- {
- unsigned int key;
- int index;
- }StData;
- int comp(unsigned int* fir, unsigned int* sec)
- {
- if(*fir < *sec)
- return -1;
- if(*fir ==*sec)
- return 0;
- return 1;
- }
- int main(int argc, char *argv[])
- {
- StData stArr[51];
- int end = 1;
- int i;
- unsigned int t;
- int j;
- FILE* fp = fopen("D:\\123.txt", "rb"); //数据文件 存放在绝对路径 D:\\123.txt中
- clock_t begin = clock();
-
- if(fp == NULL) //文件打开失败 退出
- return EXIT_FAILURE;
- for(i=0; i<50; ++i) //初始化stArr数组
- {
- fread(&stArr[i].key, sizeof(unsigned int), 1, fp);
- stArr[i].index = i;
- }
- qsort(stArr, 50, sizeof *stArr, comp); //对找出的50个数据进行排序
- for(i=50; fread(&t, sizeof t, 1, fp); ++i) //主流程
- {
- for(j=0; j<50; ++j)
- if(t < stArr[j].key)
- break;
- if(j == 50)
- continue;
- memmove(stArr+j+1, stArr+j, (50-j)*sizeof *stArr);
- stArr[j].key = t;
- stArr[j].index = i;
- }
- printf("i %d\n", i);
-
- for(i=0; i<50; ++i) //输出结果
- printf("%16d%16d\n", stArr[i].key, stArr[i].index);
-
- printf("time : %g\n", (clock()-begin)*1.0/CLOCKS_PER_SEC); //输出程序运行时间
-
- fclose(fp);
-
- return EXIT_SUCCESS;
- }
复制代码
|
|