摘要: #树 上次实现二叉搜索树与平衡二叉树,这次实现树结构的另一个重要应用:堆。 ##堆 ###什么是堆 想象一个情景,需要将任务优先级高的放在前面(优先队列),该如何实现呢? 如果用数组实现的话,插入时从尾部插入,寻找优先级最高的元素,以及删除该元素后移动需要的操作量都是巨大的,均需要$O(n)$,很明 阅读全文
posted @ 2020-11-09 16:33 W&B 阅读(163) 评论(0) 推荐(0) 编辑
摘要: #树 这次接着整树,上次说了树的基本性质和遍历一颗树的4种方式,这次会实现几种很“有用”的二叉树 ##二叉搜索树 对一颗二叉树,该如何实现它的动态查找(查找的同时会有新元素的添加,以及对已包含的元素的删除),前面已经学过了二分查找,很自然的想到如果在构建一棵树时,使得所有节点的左子树都比他小,右子树 阅读全文
posted @ 2020-10-29 22:47 W&B 阅读(137) 评论(0) 推荐(0) 编辑
摘要: #树 树是一种基本的层次结构,相比线性结构,在动态查找上,效率更高。 在说树之前,首先先说一下线性结构中两种常用的查找方式。 ##两种查找方式顺序查找和二分查找 ###顺序查找(哨兵法) 对于一个线性表方便的查找方式是,从后向前查找且将被查找的值放在最前面作为哨兵,只需要判断下标位置的元素是否为查找 阅读全文
posted @ 2020-08-23 20:56 W&B 阅读(138) 评论(0) 推荐(0) 编辑
摘要: #基本数据结构 在本节中,将会介绍关于数据结构的基本类型,如线性表,堆栈和队列 ##线性表 在数据结构中,线性表是最常见也是使用最频繁的基本数据结构,它可以通过数组实现或者链表实现,下面给出两种不同的实现代码。 //implemented by array #include<stdio.h> #in 阅读全文
posted @ 2020-08-22 16:00 W&B 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 三个小题 ##01-复杂度1 最大子列和问题 (20point(s)) 给定K个整数组成的序列{ N1​​ , N​2, ..., NK​​ },“连续子列”被定义为{ N​i , N​i+1 , ..., Nj },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给 阅读全文
posted @ 2020-07-30 18:35 W&B 阅读(225) 评论(0) 推荐(0) 编辑
摘要: Markdown简介 Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— 维基百科 Markdown语法 符号或者公式下方的代码块中写的是在Markdown中对应的写法,复制即可 代码块 import java.util.*; 阅读全文
posted @ 2020-04-10 08:37 W&B 阅读(258) 评论(0) 推荐(0) 编辑