数据结构
zhubo_1117
这个作者很懒,什么都没留下…
展开
-
时间复杂度和空间复杂度详解
没有挤公交来上班过,就不知道生活的压力有多大。 算法的时间复杂度和空间复杂度合称为算法的复杂度。 1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数转载 2014-02-26 22:34:02 · 716 阅读 · 0 评论 -
算法渐进符号
分析算法时间复杂度时,把注意力集中到关键的操作上。 几种渐进符号 大写O符号 f(n)=O(g(n)),这里f(n)是分析出来算法的执行次数的函数, O的定义:当且仅当存在正的常数c和n0,使得对于所有的n>=n0,有f(n) 这里cg(n)就是函数f(n)的上限。 几种函数的例子: 1.线性函数 f(n)=3n+2,当n>=2时,3n+2 2.平方函数 f(转载 2014-02-26 22:11:16 · 4542 阅读 · 0 评论 -
哈希表
哈希表是种数据结构,它可以提供快速的插入操作和查找操作。第一次接触哈希表时,它的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即0(1)的时间级。实际上,这只需要几条机器指令。 对哈希表的使用者一一人来说,这是一瞬间的事。哈希表运算得非常快,在计算机程序中,如果需要在一秒种内查找上千条记录通常使用哈希表(例如拼写检查器)哈希表的速度明显比树快,树转载 2013-05-13 11:27:38 · 614 阅读 · 0 评论 -
栈和队列
栈和队列是两种重要的线性结构。 栈和队列也是线性表,只不过栈和队列的基本操作是线性表操作的子集。 栈 栈是限定仅能在表尾进行插入和删除的线性表 栈顶:表尾 栈底:表头 栈先进后出 栈的表示和实现 顺序栈:栈的顺序存储结构是利用一组地址连续的存储单元依次存放自栈底到栈顶 一般来说,在初始化设空栈不应该限定栈的最大容量。在应用过程中,栈的空间不够使用再逐渐扩大原创 2012-07-15 16:24:40 · 550 阅读 · 0 评论 -
直接插入排序
编辑本段作法 直接插入排序(straight insertion sort)的作法是: 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。 第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。 直转载 2012-07-12 20:53:19 · 703 阅读 · 0 评论 -
c++ 模版函数的定义和实现放在一个文件中 .
今天使用模版函数,遇到一个问题。 当我定义一个类,并且将它的一个成员函数定义为模版类型时,需要将该模版函数的实现与该类放在一个文件中。 比如在a.h中定义了class a: [html] view plaincopyprint? class a { ... templatetypename T> a(const T& t); };转载 2012-07-12 13:55:38 · 827 阅读 · 0 评论 -
直接插入排序
插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。 本节介绍两种插入排序方法:直接插入排序和希尔排序。 直接插入排序基本思想 1.直接插入排序的基本思想 直接插入排序(Straight Insertion Sorting)的基本思想是:把n个待排序的元素看成为一转载 2014-05-21 22:04:01 · 922 阅读 · 0 评论