第二周实践项目(3)~体验复杂度
来源:互联网 发布:手机淘宝没有实名认证 编辑:程序博客网 时间:2024/06/06 12:30
两种函数的运行时间:
(一):
<span style="font-size:12px;color:#000000;">#include <stdio.h> #include <time.h> #include <stdlib.h> #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"); 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; } </span>
(二)
01.#include <stdio.h> 02.#include <time.h> 03.#include <stdlib.h> 04.#define MAXNUM 100000 05.void quicksort(int data[],int first,int last) 06.{ 07. int i, j, t, base; 08. if (first>last) 09. return; 10. base=data[first]; 11. i=first; 12. j=last; 13. while(i!=j) 14. { 15. while(data[j]>=base && i<j) 16. j--; 17. while(data[i]<=base && i<j) 18. i++; 19. /*交换两个数*/ 20. if(i<j) 21. { 22. t=data[i]; 23. data[i]=data[j]; 24. data[j]=t; 25. } 26. } 27. data[first]=data[i]; 28. data[i]=base; 29. quicksort(data,first,i-1); 30. quicksort(data,i+1,last); 31.} 32. 33.int main() 34.{ 35. int x[MAXNUM]; 36. int n = 0; 37. double t1,t2; 38. FILE *fp; 39. fp = fopen("numbers.txt", "r"); 40. while(fscanf(fp, "%d", &x[n])!=EOF) 41. n++; 42. printf("数据量:%d, 开始排序....", n); 43. t1=time(0); 44. quicksort(x, 0, n-1); 45. t2=time(0); 46. printf("用时 %d 秒!", (int)(t2-t1)); 47. fclose(fp); 48. return 0; 49.}
由结果看,第二个明显快于第一个,原因是第一个是呈指数性增长,第二个是呈线性增长。
由此可以注意以后变成复杂度的意义。
0 0
- 第二周实践项目3-体验复杂度(2)汉诺塔
- 第二周实践项目3-体验复杂度(1)
- 第二周实践项目(3)~体验复杂度
- 第二周实践项目3--体验复杂度(1)
- (第二周项目3)体验复杂度
- 第二周实践项目3-体验复杂度(两种排序算法的运行时间)
- 第二周【项目3 - 体验复杂度】
- 第二周项目3—体验复杂度
- 第二周 项目3-体验复杂度(1)
- 第二周项目3--体验复杂度--汉诺塔
- 第二周 项目3 体验复杂度
- 第二周项目3 体验复杂度 汉诺塔
- 第二周项目3复杂度体验 汉诺塔
- 第二周 项目3 体验复杂度
- 第二周-项目3 - 体验复杂度
- 第二周项目3--体验复杂度--汉诺塔
- 第二周项目3--体验复杂度--汉诺塔
- 第二周项目3-体验复杂度
- 第二周项目3复杂度体验1 两种排序算法的运行时间
- 网络连接之-xUtils框架(第三方通信框架)介绍(一)
- Python:安装setuptools,安装MySQLdb模块,连接数据库代码
- Java进阶之路 异常
- ANSI和UNICODE
- 第二周实践项目(3)~体验复杂度
- Android实战简易教程-第五十九枪(EventBus小实例-传值、控制其他页控件显示)
- RB-tree (红黑树)相关问题
- xHTML究竟有多少个标签?
- linux 可视化的几种模式
- HDU 1950 Bridging signals (DP动态规划 + 二分搜索 O(nlogn) )
- PathVariable
- 巧用ViewInject
- JVM和垃圾回收机制的一些整理