【Data Structure】
文章平均质量分 93
Summer_ZJU
如果你不去努力,就没有资格抱怨
展开
-
直接插入排序
基本思想插入排序的基本思想就是:每次将一个待排序的记录,按照其关键字大小插入到已经排好序的子序列的适当位子,知道全部记录插入完成为止;假设待排序的记录都存储在R[n]中,首先把R[1]自成一个有序区,R[2..n]为无序区,然后将R[2..n]中的记录依次插入到R[1..i]中,直到生成含有n个记录的有序区; 在插入的某一中间时刻,存在两个区,一个是R[1..i-1原创 2014-04-30 18:00:02 · 673 阅读 · 0 评论 -
斐波那契数列的几种计算机解法
斐波那契数列传说起源于一对非常会生的兔子。定义:这个数列有很多奇妙的性质(比如 F(n+1)/F(n) 的极限是黄金分割率),用计算机有效地求解这个问题的解是一个比较有意思的问题,本文一共提供了4种解法。解法一:递归这是最最最直观的想法,是每个人都能编写的简单程序,优点是非常明显的:简单易懂,清晰明了。但是缺点就是效率非常低,时间复杂度是指数级的。举转载 2014-10-08 23:18:15 · 1212 阅读 · 0 评论 -
包含min、max函数的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的函数。在该栈中,调用min,push,pop的时间复杂度都是O(1)原创 2014-10-21 10:17:37 · 705 阅读 · 0 评论 -
C++的一些知识点总结
本文的主要内容来自孙鑫的《VC++深入详解》和侯俊杰的《sh原创 2014-06-24 14:54:08 · 2095 阅读 · 0 评论 -
最短路径算法
1 最短路径算法在日常生活中,我们如果需要常常往返A地区和B地区之间,我们最希望知道的可能是从A地区到B地区间的众多路径中,那一条路径的路途最短。最短路径问题是图论研究中的一个经典算法问题, 旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。 算法具体的形式包括:(1)确定起点的最短路径问题:即已知起始结点,求最短路径的问题。(2)确定终点的最短路径问题:与确定起点原创 2016-06-24 08:02:17 · 654 阅读 · 0 评论 -
TCP/IP & HTTP
这里先把自己查阅的资料放这里吧,还没来得及总结TCP/IP1、网络协议 两台电脑之间进行通讯所共同遵守的规则,就是网络协议2、TCP/IP和OSI模型的区别 虽然国际标准化组织制定了OSI网络协议模型,但是实际上互联网通讯使用的网络协议是TCP/IP网络协议。简单的说,OSI网络协议模型,是一个参考模型,而TCP/IP协议是事实上的标准。 TCP/IP 是一个协议族,也是按照层次划分。共四层:原创 2016-08-31 13:53:58 · 406 阅读 · 0 评论 -
B树、B+树、红黑树、AVL树
B树、B+树、红黑树B树B树红黑树定义及概念B树B树红黑树AVL树B树和B树的区别红黑树的应用及和B树区别AVL树和红黑树B树M阶的插入和删除插入删除定义及概念B树二叉树的深度较大,在查找时会造成I/O读写频繁,查询效率低下,所以引入了多叉树的结构,也就是B树。关于B树的由来,这里阐述了B-tree名字来源以及相关的开源地址。 阶为M的B树具有以下性质: 1、根节点在不为原创 2016-09-15 15:33:48 · 3405 阅读 · 0 评论 -
零碎知识点总结
这里总结一些关于语言、数据结构的一些基础知识。好记性不如烂笔头o(^▽^)o零碎知识点总结零碎知识点总结数组和指针的区别指针数组和数组指针hashmap 和 hashtable 的区别链表和数组的区别内存字节怎么对齐为什么要对齐new和malloc的区别抽象类和接口的区别桥接模式和适配器模式的区别数组和指针的区别1、计算内存容量上的差别 当数组作为函数的形参的时候,该数组自动退化为原创 2016-09-15 17:57:13 · 816 阅读 · 0 评论 -
链表操作
链表操作(不带头节点的)链表其实蛮简单的,但如果一段时间不用的话马上让你写还真不一定能写的出来,这里总结一下,作为温习。结构声明typedef int elemType;//根据自己的需要来 //单链表结点类型 typedef struct ListNode{ elemType element; struct ListNode *next; }Node; 初始化//原创 2016-08-31 13:44:02 · 569 阅读 · 0 评论 -
排序算法总结
好记性不如烂笔头o(^▽^)o前言 记得之前毕业找工作的时候好好总结过,但是,工作中基本不怎么用到这些排序算法,所以久而久之就忘了。以前写的文章链接(包括详细的思路、图和完整代码): 《直接选择排序》 《冒泡排序算法》 《希尔排序算法》 《快速排序算法》 《直接插入排序》 其实每种看了后很容易混淆和记不住,所以这里就对这些排序算法进行归类和总结,主要涉及十大排序算法。原创 2016-09-23 14:41:30 · 717 阅读 · 0 评论 -
堆内存和栈内存详解
堆:顺序随意 栈:先进后出 堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的转载 2014-10-08 11:02:40 · 559 阅读 · 0 评论 -
八皇后问题
比较火的一道智力题,题目就不说了,yisou原创 2014-10-22 09:40:02 · 714 阅读 · 0 评论 -
最近看的一些关于数据结构和C++的面试知识点总结
把最近两天看的一些关于C++的面试细节知识点总结一下,kend原创 2014-08-24 17:09:22 · 1049 阅读 · 0 评论 -
快速排序算法
基本思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。原创 2014-04-30 22:03:25 · 3707 阅读 · 0 评论 -
希尔排序算法
基本思想: 希尔排序(Shell Sort)是插入排序的一种。因D.L.Shell于1959年提出而得名。原创 2014-05-01 10:23:49 · 845 阅读 · 0 评论 -
关于C++标准库中的 Map 和 hash_map 知识点小总结
map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。原创 2014-05-05 14:48:21 · 1632 阅读 · 0 评论 -
数据结构——AVL树
AVL树是最早提出的自平衡二叉树,在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. Landis。AVL树种查找、插入和删除在平均和最坏情况下都是O(log n),增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。原创 2014-04-19 10:37:21 · 1216 阅读 · 0 评论 -
B-Tree
先引用一段wiki上B-Tree的定义:Definition[edit]According to Knuth's definition, a B-tree of order m is a tree which satisfies the following properties:Every node has at most m children.Every non-原创 2014-04-25 20:36:54 · 1013 阅读 · 0 评论 -
冒泡排序算法
交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。原创 2014-07-12 20:47:57 · 634 阅读 · 0 评论 -
直接选择排序
选择排序(Selection Sort)的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。 常用的选择排序方法有直接选择排序和堆排序。原创 2014-07-12 21:38:08 · 1716 阅读 · 0 评论 -
C++一些问题
1、if-else语句和switch-case语句的效率分析对比switch效率高。switch的效率与分支数无关,当只有分支比较少的时候,if效率比switch高,因为switch有跳转表。分支比较多,那当然是switch根据大量的实际程序测试(不考虑不同的编译器优化程度差异,假设都是最好的优化),那么Switch语句击中第三个选项的时间跟if/else if语句击中第三个选原创 2016-06-24 08:00:20 · 543 阅读 · 0 评论