数据结构与算法分析——C语言描述
2015-05-30 13:38
423 查看
P1.1 选择问题,选择出第K大的数,并画出N为不同值的运行时间,K=N/2
毕业两年半,重写排序,感觉良好。代码使用冒泡排序,库函数clock计算大致运行时间。
更改N值,来测试不同样本值的运行时间。
假如数据是学生的一个科目的考试成绩,百分制。N表示学生的个数。
N Time(ms)
0 0
50 1
100 5
500 49
1000 101
5000 272
N(万) Time(ms)
1 281
2 1109
3 2506
4 4384
5 6764
6 9747
7 13296
8 17421
9 22078
10 27307
用这个网站绘制曲线图:
感觉就是个递增。其实这是假象...再看这两个小图:
人数是普通的递增,但是时间可不是递增,时间花费是迅速上升的。
毕业两年半,重写排序,感觉良好。代码使用冒泡排序,库函数clock计算大致运行时间。
// P1_1.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <malloc.h> #include <stdlib.h> #include <time.h> void swap(int& a,int& b); int main(int argc, char* argv[]) { int N = 40000; int k = N/2; int i,j; //动态数组 int *dynArr = (int *)malloc(N * sizeof(int)); //生成随机数组 srand((unsigned) time(NULL)); //printf("%d%c", rand(),'\t'); for(i=0; i<N;i++) { dynArr[i] = rand()%100; //printf("%d%c",dynArr[i],'\t'); } int beginTime = clock();//计时开始 //冒泡排序 int temp = 0; for(i=0;i<N;i++) for(j=0;j<N;j++) { if(dynArr[i]>dynArr[j]){ //左>右,交换 swap(dynArr[i],dynArr[j]); } }//第一层结束,最大数在最右 int endTime = clock();//计时结束 int runningTime = endTime - beginTime;//算出来的单位是毫秒 for(i=0; i<N;i++){ // dynArr[i] = rand()%100; //printf("%d%c",dynArr[i],'\t'); } char str1[] = "个数中第k大的数:"; char str2[] = "运行时间(毫秒):"; printf("\n%d%s%d\t",N,str1,dynArr[k]); printf("\n%s%d\n",str2,runningTime); return 0; } void swap(int& left,int& right){ int temp; temp = left; left = right; right = temp; }
更改N值,来测试不同样本值的运行时间。
假如数据是学生的一个科目的考试成绩,百分制。N表示学生的个数。
N Time(ms)
0 0
50 1
100 5
500 49
1000 101
5000 272
N(万) Time(ms)
1 281
2 1109
3 2506
4 4384
5 6764
6 9747
7 13296
8 17421
9 22078
10 27307
用这个网站绘制曲线图:
感觉就是个递增。其实这是假象...再看这两个小图:
人数是普通的递增,但是时间可不是递增,时间花费是迅速上升的。
相关文章推荐
- 稀疏矩阵的快速转置
- 数据结构面试题总结5——数组:找出数组中唯一一个出现一次的元素
- 数据结构之---C语言实现稀疏矩阵
- 数据结构面试题总结4——数组:求两个有序数组中的共同元素
- 数据结构学习
- 数据结构之 --线性表之--串
- 【整理】数据结构与算法【概念】
- 黑马程序员-数据类型、变量作用域和数据结构的学习笔记
- 算法导论14(数据结构的扩张)
- 数据结构面试题总结3——数组:求数组中两个元素的最小距离
- 星际之门(一)
- C#数据结构回顾之循环队列
- Dancing Links讲解和练习整理
- 运行时数据结构
- C#数据结构回顾之链栈
- 数据结构练习 02-线性结构3. Pop Sequence (25)
- 该学学数据结构了,不会数据结构真是寸步难行啊。。。。。
- 深入云存储系统Swift核心组件:Ring数据结构及构建、重平衡操作
- LeetCode---题目难度、出题频率、数据结构、考察点统计
- 【转】MySQL索引背后的数据结构及算法原理