散列表(也叫哈希表),是根据关键码值直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 - 数据结构中,有个时间算法复杂度O(n)的概念来衡量某种算法在时间效率上的优劣。哈希表的理想算法复杂度为O(1 ...
分类:
其他好文 时间:
2016-08-21 09:42:53
阅读次数:
144
最近在多校题解中经常看到巨巨们手写函数进行取模操作,似乎是比%操作更快。 %操作在计算机中的实现依靠除法,显然不如手写函数的加减法更优秀。 在进行多次加法更新取模的时候,可以写一发。不过当算法复杂度在O(n)以上的时候,这个优化意义不大。 看起来优化了很多的样子 cpu是i5-4300u ...
分类:
其他好文 时间:
2016-08-05 21:27:08
阅读次数:
209
1)编写程序,求解a^b。其中b是正整数。 方法1. 这种使用连乘计算幂值的算法,复杂度是O(n)。不过如果将连乘拆分为若干相乘的表达式就可以减少做乘法的次数,自然也能提高算法效率。 方法2:快速幂计算 以a^10为例,一般方法是a^10=a*a*a*a*a*a*a*a*a*a,做9次乘法操作。为了 ...
分类:
其他好文 时间:
2016-07-30 13:37:57
阅读次数:
120
选择排序选择排序的基本思想是对待排序的记录序列进行n-1遍的处理,第i遍处理是将L[i..n]中最小者与L[i]交换位置。这样,经过i遍处理之后,前i个记录的位置已经是正确的了。 选择排序是不稳定的。算法复杂度是O(n ^2 )。package mainimport (
"fmt"
)type SortInterface interface {
sort()
}
type Sorto...
分类:
编程语言 时间:
2016-07-19 11:15:08
阅读次数:
204
对于这一类的问题有2中解决方法。第一种就是tarjan的离线算法,还有一中是基于ST算法的在线算法。复杂度都是O(n); 先介绍在线算法: 1) dfs: 对于图所示的树,我们从根节点1开始dfs,按照先序访问(不算完全的先序),那么它访问顺序就是1 -> 2 -> 4 -> 2 -> 5 -> 7 ...
分类:
编程语言 时间:
2016-07-13 10:28:51
阅读次数:
139
冒泡排序详解algorithm冒泡排序一、算法步骤二、示例讲解三、算法复杂度1.时间复杂度四、代码实现冒泡排序一、算法步骤将第一个数字和第二个数字比较,若第一个数字比第二个数字大,则交换位置。然后再将第二个数字和第三个数字比较,依次不断地比较,交换。不断循环直到不再发生交换,这就表明排序已完成,此时... ...
分类:
编程语言 时间:
2016-07-12 13:49:13
阅读次数:
346
在上个星期面试一家公司的笔试题上面的最后一道题就是写程序查找一个字符串的最长重复子串。当时想了很长时间没想出什么好方法,就把一个算法复杂度比较高的算法写上去了。回来上机把那个算法写了一遍测试没问题,然后自己又到网上面查查还有什么方法,然后发现好像有种叫做后..
分类:
编程语言 时间:
2016-07-12 00:14:27
阅读次数:
450
标题长坑,就拿最近有在用的来弄吧,先写个大概,以后逐渐完善。 对于以下代码,默认包含头文件: 1.冒泡排序(Bubble Sort) 先从课本上最常见的冒泡排序说起吧,C++代码如下(个人习惯介绍算法使用C++,比伪代码还通俗易懂.......) 在下文中,我会给出实验测试算法复杂度的方法,我们不急 ...
分类:
编程语言 时间:
2016-07-08 21:34:08
阅读次数:
232
算法分析初步: 在任何一本比较正经的算法书当中,第一章都会介绍算法正确性的证明方法和对算法复杂度的分析,因为算法本身两个重要的特性就是正确性和高效性,只有保证了这两部分方能设计出有实际利用价值的算法。 那么这篇文章通过一个简单的题目来初步探讨一下如何进行算法时间复杂度的分析。 需要指明的是,算法的复 ...
分类:
其他好文 时间:
2016-06-29 17:17:27
阅读次数:
128
看了好久才终于明白了这个算法。。复杂度是O(n+m)。 我觉得这个算法不是很好理解,但是看懂了以后还是觉得听巧妙的。 下面给出模板代码和三组简单数据帮助理解。 代码如下: 三组数据如下: ...
分类:
编程语言 时间:
2016-06-28 20:17:25
阅读次数:
211