CompilerTech

导航

2011年5月25日

[转载]算法复杂度--时间复杂度和空间复杂度

摘要: 算法复杂度——时间复杂度和空间复杂度 http://dlnzs.iteye.com/blog/378712关键字: 算法复杂度 时间复杂度 空间复杂度 1、时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。 (2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时, 阅读全文

posted @ 2011-05-25 21:44 compilerTech 阅读(623) 评论(0) 推荐(0) 编辑

精彩网址

摘要: 清华精品课程:http://itcs.tsinghua.edu.cn/zh/list-127-1.html嵌入式学习基地:http://learn.akae.cn/media/index.html源码 http://www.hackchina.com 嵌入式linux http://www.busybox.net/html5 很好的应用 http://www.iteye.com/news/22225QT : http://doc.qt.nokia.com/latest/index.html 阅读全文

posted @ 2011-05-25 21:18 compilerTech 阅读(158) 评论(0) 推荐(0) 编辑

[转载]由一道百度试题 引发的讨论

摘要: 递归算法的复杂度 http://zhiqiang.org/blog/science/computer-science/complexity-of-recursive-algorithm.html递归算法的复杂度通常很难衡量,一般都认为是每次递归分支数的递归深度次方。但通常情况下没有这个大,如果我们可以保存每次子递归的结果的话,递归算法的复杂性等于不同的节点个数。这也是动态规划算法思想的由来。看一下下面这个算法题目,据称是百度的笔试题:简述:实现一个函数,对一个正整数n,算得到1需要的最少操作次数:如果n为偶数,将其处以2;如果n为奇数,可以加1或减1;一直处理下去。要求:实现函数(实现尽可能高 阅读全文

posted @ 2011-05-25 21:17 compilerTech 阅读(170) 评论(0) 推荐(0) 编辑

[转载]折半查找

摘要: 折半查找 http://learn.akae.cn/media/ch11s06.html如果不是从一组随机的序列里查找,而是从一组排好序的序列里找出某个元素的位置,则可以有更快的算法:例11.4.折半查找#include <stdio.h>#define LEN 8int a[LEN] = { 1, 2, 2, 2, 5, 6, 8, 9 };int binarysearch(int number){ int mid, start = 0, end = LEN - 1; while (start <= end) { mid = (start + end) / 2; if (a 阅读全文

posted @ 2011-05-25 20:54 compilerTech 阅读(622) 评论(0) 推荐(1) 编辑

[转载]归并排序

摘要: 归并排序http://learn.akae.cn/media/ch11s04.html插入排序算法采取增量式(Incremental)的策略解决问题,每次添一个元素到已排序的子序列中,逐渐将整个数组排序完毕,它的时间复杂度是O(n2)。下面介绍另一种典型的排序算法--归并排序,它采取分而治之(Divide-and-Conquer)的策略,时间复杂度是Θ(nlgn)。归并排序的步骤如下:Divide: 把长度为n的输入序列分成两个长度为n/2的子序列。Conquer: 对这两个子序列分别采用归并排序。Combine: 将两个排序好的子序列合并成一个最终的排序序列。在描述归并排序的步骤时又调用了归 阅读全文

posted @ 2011-05-25 20:49 compilerTech 阅读(489) 评论(0) 推荐(0) 编辑

[转载]算法的时间复杂度分析

摘要: 算法的时间复杂度分析 http://learn.akae.cn/media/ch11s03.html解决同一个问题可以有很多种算法,比较评价算法的好坏,一个重要的标准就是算法的时间复杂度。现在研究一下插入排序算法的执行时间,按照习惯,输入长度LEN以下用n表示。设循环中各条语句的执行时间分别是c1、c2、c3、c4、c5这样五个常数[23]:void insertion_sort(void) 执行时间{ int i, j, key; for (j = 1; j < LEN; j++) { key = a[j]; c1 i = j - 1; c2 while (i >= 0 & 阅读全文

posted @ 2011-05-25 20:27 compilerTech 阅读(581) 评论(0) 推荐(1) 编辑