定义:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前 ...
分类:
其他好文 时间:
2017-07-28 13:29:37
阅读次数:
120
前言 红黑树是工程中最常用到的一种自平衡二叉排序树,其和AVL树类似,都是在进行插入、删除时通过一定的调整操作来维持相对稳定的树高,从而获得较好的查询性能。 性质 1. 节点是红色或黑色。 2. 根节点是黑色。 3 每个叶节点(null节点)是黑色的。 4 每个红色节点的两个子节点都是黑色。(从每个 ...
分类:
编程语言 时间:
2017-07-27 23:36:39
阅读次数:
257
这里对java中常用的集合做一个小结 单列集合:Collection 单列集合的根接口 List系列:有序,不唯一 1,ArrayList 底层使用Object数组,查询快,插入删除慢 2,LinkedList 底层使用链表数据结构,查询慢,增删快,有removeLast()方法,而ArrayLis ...
分类:
编程语言 时间:
2017-07-27 18:14:34
阅读次数:
203
学习数据结构的笔记 1.在线性表的链式存储中,头指针与头结点之间的根本区别以及头结点与开始结点的关系: 链表的头指针一般指向其第一个结点,他有标识链表的作用。头结点的作用在于统一相关操作,头结点的数据域一般没有意义,在某些情况下可以存放链表长 度。如果链表含有头结点,无论链表是 否为空,头指针均不为 ...
分类:
其他好文 时间:
2017-07-26 15:36:06
阅读次数:
156
在没有C语言之前还没有指针这个概念,但是那个时候就已经有和现在静态链表操作形式类似数据存储类型。静态链表的优势就在于,在对其中存储的信息进行插入删除操作的时候它的时间复杂度是 O(1) ,那么在没有指针的时候是使用什么来实现这种存储操作的那? 那就是用数组来代替指针,静态链表在进行数据遍历的时候是依 ...
分类:
编程语言 时间:
2017-07-26 01:56:33
阅读次数:
217
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 算法要求 1,必须采用顺序存储结构 2,必须按关键字大小有序排列 算法复杂度 二分查找的基本思想是将n个元素分成大致相等的两部分,取a ...
分类:
其他好文 时间:
2017-07-26 01:49:43
阅读次数:
153
实现个算法,懒得手写链表,于是用C++的forward_list,没有next()方法感觉很不好使,比如一个对单向链表的最简单功能要求: input: 1 2 5 3 4 output: 1->2->5->3->4 相当于仅仅实现了插入、遍历2个功能(当然遍历功能稍微修改就是销毁链表了) 用纯C写了 ...
分类:
编程语言 时间:
2017-07-25 10:09:34
阅读次数:
284
(非递归实现) (递归实现) 最优时间复杂度:O(1) 最坏时间复杂度:O(logn) 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。 ...
分类:
编程语言 时间:
2017-07-24 09:55:16
阅读次数:
174
前面写过了向量和链表的结构,前者静态性能好而动态性能差,后者则相反。考虑改进树的结构,得到动态和静态性能都让人满意的数据结构,特别是在查找以及插入删除操作上具有优势。 查找或搜索(search):从一组数据对象中找出符合条件者的操作。把数据对象,定义为词条的形式(Entry),词条的形式为关键码-值 ...
分类:
其他好文 时间:
2017-07-23 18:26:48
阅读次数:
318
二叉搜索树: 二叉树的查找非常easy。先序后序中序都能够。一開始要推断是否为空。 插入要推断一下是否存在,查找时同一时候记录其父节点,然后直到找到空节点。插入。 删除比較复杂一点: 逐一推断: 先推断是否为空,然后查找到要删除的节点p,并记录其父节点q,假设查不到,返回false; 当p节点有两个 ...
分类:
其他好文 时间:
2017-07-22 14:41:49
阅读次数:
151