关于O(n^2)复杂度的体验
2015-09-11 13:22
281 查看
/* * Copyright (c) 2015, 烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:cpp1.cpp * 作者:巩凯强 * 完成日期:2015年9月11日 * 版本号:v6.0 * * 问题描述:体验O(n^2)的复杂度 * 输入描述:无 * 程序输出:排序所需要的时间 */ #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"); if(fp==NULL) { printf("打开文件错!请下载文件,并将之复制到与源程序文件同一文件夹下。\n"); exit(1); } while(fscanf(fp, "%d", &x )!=EOF) n++; printf("数据量:%d, 开始排序....", n); t1=time(0); selectsort(x, n); t2=time(0); printf("用时 %d 秒!", (int)(t2-t1)); fclose(fp); return 0; }
运行结果:
知识点总结:
本题主要是体验程序的复杂度问题,就该题而言,复杂度为O(n^2),因为采用选择排序,即循环套循环的结构,所以最高复杂度为n^2。
学习心得:
虽然一个题有多种解法,但是对于我们来说,写出的程序要具备效率高,用时短的特点,因此,这个题的方法并不是太好的。下一篇文章会有更好的方法。
相关文章推荐
- 出现这个错误CUICatalog: Invalid asset name supplied: , or invalid scale factor: 2.000000
- Android,iOS打开手机QQ与指定用户聊天界面
- sql中group by和order by
- 检测内网在线ip
- IOS开发之使用Speex格式实现简单的语音聊天功能(一)
- sqoop数据导出导入命令
- 《PCA的数学原理》读书笔记
- 【springmvc+mybatis项目实战】杰信商贸-10.生产厂家停用+启用
- python脚本中的函数开发时怎么调试(__name__=="__main__")
- NUI四种提交数据方式
- OutOfMemoryError
- 类加载器
- xml report error
- javascript的历史
- [Android]使用Kotlin+Anko开发Android(一)
- Rust语言之HelloWorld
- Rust语言之HelloWorld
- NSDateFormatter转换时间字符串时的时区问题
- #1063 : 缩地
- hdu 3635 Dragon Balls(并查集应用)