排序问题专辑-前奏
来源:互联网 发布:js 数组比较相同 编辑:程序博客网 时间:2024/06/04 20:02
在随后的各个排序算法中,都假设数组内只包含整数,都属于内部排序。
用c语言实现。
之后的排序算法主要包括:
- 插入排序
- 冒泡排序
- 希尔排序
- 堆排序
- 归并排序
- 快速排序
并且生成一个包含1000000个0-2000000的随机数字的文件对各个排序算法进行时间测试。
通过对十万的随机数据进行测试,发现连续执行程序的时候程序时间是递增的,而且程序执行过程中电脑风扇声音很大,说明了处理大批数据会导致处理器发热,从而影响了处理器性能,因此对一百万的数据进行测试的话,测量的时间并不准确(不仅仅依赖于处理器的数据指标,数据量依赖于电脑配置:L)。所以我都是执行一次之后等风扇安静下来之后才执行第二次。
生成随机数文件源码如下:
/*************************************************************************> File Name: produce_random.c> Author: W> Mail: gxxxxxxx@xx.com > Created Time: 2016年04月09日 星期六 16时14分37秒 ************************************************************************/#include<stdio.h>#include<stdlib.h>#include<time.h>#define COUNT 1000000int main(void){int i;FILE *fp;srand((unsigned)time(NULL));if((fp=fopen("rand_num.txt","w+")) == NULL){printf("Can't open file\n");exit(1);}for(i = 0; i < COUNT; i++){fprintf(fp,"%d ",rand()%2000000);}fclose(fp);return 0;}调用系统时间对排序计时(微妙),源码如下:
/*************************************************************************> File Name: get_time.c> Author: W> Mail: gxxxxxxx@xx.com > Created Time: 2016年04月09日 星期六 16时46分19秒 ************************************************************************/#include<stdio.h>#include<sys/time.h>#include<unistd.h>int main(void){struct timeval start, end;gettimeofday(&start, NULL);sleep(3);gettimeofday(&end, NULL);int timeuse = 1000000 * (end.tv_sec - start.tv_sec) + end.tv_usec - start.tv_usec;printf("time: %d us\n",timeuse);return 0;}
测试程序源码:
Int main(void){int arr[NUM_COUNT] = {0};int i, count;struct timeval start, end;int used_time;FILE *in_file, *out_file;if((in_file = fopen("rand_num.txt","r")) == NULL){printf("error:open the input file failed!\n");exit(1);}if((out_file = fopen("sort_num.txt","w+")) == NULL){printf("error:open the input file failed!\n");exit(1);}count = NUM_COUNT;for(i = 0; i < count; i++){fscanf(in_file, "%d", &arr[i]);}gettimeofday(&start, NULL);sort(arr,count);gettimeofday(&end, NULL);used_time = 1000000 * (end.tv_sec - start.tv_sec) + end.tv_usec - start.tv_usec;printf("The sort time: %d us\n",used_time);for(i = 0; i < count; i++){fprintf(out_file, "%d ", arr[i]);}fclose(in_file);fclose(out_file);return 0;}详细的源码在:https://github.com/GkWangBin/structures
1 0
- 排序问题专辑-前奏
- 网易练习题,专辑问题
- 冒泡排序之前奏---“潜伏”
- 前奏
- 前奏!
- 今日头条编程题 专辑问题
- 大数据-hadoop 安装 spark前奏
- ubuntu 9.10专辑-中文输入法
- 排序问题-插入排序
- 排序问题-冒泡排序
- 排序问题-希尔排序
- 排序问题-堆排序
- UGUI拖拽与射线检测问题(背包前奏)
- 2011.12月初 背包问题专辑POJ 3624 1276 2392 1837
- 音乐播放器问题:专辑封面和锁屏图…
- 送给喜欢BEYOND的朋友--BEYOND-《纪念专辑珍藏版》专辑[APE+CUE整轨]
- 笔试面试系列---排序算法专辑---直接插入排序---错误答案纠正
- 笔试面试系列---排序算法专辑---冒泡排序---错误答案纠正
- 继承
- Qt的常见编译错误
- php中合并数组的方法
- VC读写txt文件时提示unrecognized character escape sequence(无法识别的字符转移序列)
- 输入输出重定freopen
- 排序问题专辑-前奏
- jdk版本间区别
- android app 图片大小优化办法
- 链表逆序
- JNI - Access static field
- RxAndroid map源码解析
- 4行代码实现js模板引擎
- 【Android基础】利用布局来拼图
- 260. Single Number III