摘要: 栈,是只能通过访问它的一端来实现数据存储和检索的一种线性数据结构。对于栈的修改要按照先进后出的原则进行,因此,栈又被称为后进先出(LIFO)的线性表。 链栈,用链表作为存储结构的栈 —— 链表的头指针就是栈顶指针。 基本方法有: 初始化:创建一个空栈。 判断栈是否为空:如果栈为空,返回“真”,否则返 阅读全文
posted @ 2022-03-21 21:25 vicky2021 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 栈,是只能通过访问它的一端来实现数据存储和检索的一种线性数据结构。对于栈的修改要按照先进后出的原则进行,因此,栈又被称为后进先出(LIFO)的线性表。 顺序栈,是用一组地址连续的存储单元存储自栈顶到栈底的数据元素。 基本方法有: 初始化:创建一个空栈。 判断栈是否为空:如果栈为空,返回“真”,否则返 阅读全文
posted @ 2022-03-21 21:22 vicky2021 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 动态规划与分治法相似,都是通过组合子问题的解来求解原问题(Programming在这里指的是一种表格法,并非是编写计算机程序),但是又有所不同: 分治法将问题分解为互不相交的子问题,递归求解子问题,再将它们的解组合起来,求出原问题的解。 动态规划适合求解最优化问题(optimization prob 阅读全文
posted @ 2022-03-20 21:31 vicky2021 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 问题 逆序:在序列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。 逆序数:序列中逆序的总数量。 例如,在数列{3,6,7,8,2}中,{3,2},{6,2},{7,2},{8,2}都是逆序。 思路 暴力法 暴力求解就是一个个地去遍历,时间复杂度O(N^2)。 阅读全文
posted @ 2022-03-20 16:47 vicky2021 阅读(760) 评论(0) 推荐(0) 编辑
摘要: 计数排序(Counting Sort)不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。 找出待排序的数组中最大和最小的元素; 统计数组中每个值为i的元素出现的次数,存入数组C的第i项; 阅读全文
posted @ 2022-03-20 14:03 vicky2021 阅读(53) 评论(0) 推荐(0) 编辑
摘要: 一般来说,最好情况和最坏情况的时间复杂性是很难计量的 —— 原因是对于问题的任意确定的规模N达到了Tmax(N)的合法输入难以确定,而规模N的每一个输入的概率也难以预测或确定。我们有时也按平均情况计量时间复杂性,但那是在对P(I)做了一些人为的假设(比如等概率)之后才进行的。所做的假设是否符合实际总 阅读全文
posted @ 2022-03-20 12:05 vicky2021 阅读(616) 评论(0) 推荐(0) 编辑
摘要: 分治就是分而治之,就是把一个大问题分成多个相同或相似的子问题,再把子问题分成更小的子问题……直到最后的子问题可以直接求解出来,然后将所有子问题的解的合并,就得到了大问题的解。在分治策略中,我们递归地求解一个问题,在每层递归中应用如下三个步骤: 分解(Divide),将问题划分为一些子问题,子问题的形 阅读全文
posted @ 2022-03-16 22:35 vicky2021 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 线性表是最简单、基本和常用的一种线性结构。 一个线性表是n个元素的有限序列,通常表示为(a1, a2, ... , an),非空线性表的特点如下: 存在唯一的一个”第一个“的元素。 存在唯一的一个”最后一个“的元素。 除第一个元素外,序列中的每个元素均只有一个直接前驱。 除最后一个元素外,序列中的每 阅读全文
posted @ 2022-03-14 22:49 vicky2021 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 问题 汉诺塔问题是算法经典问题,一般使用分治的思想来求解这个问题。 汉诺塔问题由三根柱子(起始柱、目标柱、辅助柱)和n个圆盘组成。开始时,在起始柱上有n个圆盘,这些圆盘自下而上,由大到小地放置在一起。各圆盘从小到大编号为1,2,…,n。要求将起始柱上的这些圆盘移动到目标柱上,并仍然按照同样的顺序放置 阅读全文
posted @ 2022-03-13 17:14 vicky2021 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 问题 整数划分问题,是将正整数n表示成一系列正整数之和:n=n1+n2+…+nk,其中n1≥n2≥…≥nk≥1,k≥1。正整数n的这种表示称为正整数n的划分。 例如,正整数6有如下11种不同的划分: 6; 5+1; 4+2,4+1+1; 3+3,3+2+1,3+1+1+1; 2+2+2,2+2+1+ 阅读全文
posted @ 2022-03-13 15:51 vicky2021 阅读(846) 评论(0) 推荐(0) 编辑