摘要: Static对函数的作用:当同时编译多个文件,所有未加static前缀的全局变量和函数都具有全局可见性。如果加了static,会对其他文件隐藏,利用static可以在不同的文件定义同名的函数和变量。Static对变量的作用有三个:1.和对函数的作用一样。2.保持变量的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,并且是唯一的一次初始化。存储在静态存储区的变量有两类:全局变量和static变量,和全局变量比起来,static可用控制变量的可见范围,说到底static还是用来隐藏。举例如下:#include<stdio.h>#include<stdlib.h> 阅读全文
posted @ 2012-03-24 19:39 爱也玲珑 阅读(544) 评论(0) 推荐(0) 编辑
摘要: (排序数组)题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。、分析:如果我们不考虑时间复杂度,最简单想法是计算任一一个数字与其他n-1个数字的和,判断是否等于给定值。复杂度是O(n2)。由于该序列是升序数组,我们假设随意取数组中的两个数,如果和等于给定值,那么就是我们所找的两个数;如果小于给定值,很容易想到,更小的那个数应该更大,即下标应该更大,那么对应的数会更大;如果大于给定 阅读全文
posted @ 2012-03-24 16:39 爱也玲珑 阅读(3301) 评论(0) 推荐(0) 编辑
摘要: 穷举的模式匹配算法时间代价:最坏情况比较n-m+1趟,每趟比较m次,总比较次数达(n-m+1)*m。复杂度为O(m*n)。原因在于每趟重新比较时,目标串的检测指针要回退,而这回退后再进行的计算很多是没必要。改进的模式匹配算法(KMP算法)可使目标串的检测指针不回退。总的比较次数最坏为n,求next函数的比较次数为m,所以总的时间复杂度为O(n+m)。 假设S串匹配到i位置,T串匹配到j位置,那么穷举法和KMP算法的区别就在于失配情况下所做的处理。我们的字符串下标从0开始。穷举法中,如果当前字符匹配,即S[i]=T[j],则令i++, j++,继续匹配下一个字符;如果失配,即S[i]!=T... 阅读全文
posted @ 2012-03-24 00:54 爱也玲珑 阅读(574) 评论(0) 推荐(0) 编辑