1.数据结构与算法初探 (1)什么是数据结构 a.“摆放图书”例子 b.逻辑结构与存储结构 c.抽象数据类型 (2)什么是算法 算法的定义 算法的特性和设计要求 算法的度量方法(时间复杂度 & 空间复杂度) (3)算法优化——最大子列和 算法1:三重循环 算法2:两重循环 算法3:分治 算法4:在线 ...
分类:
编程语言 时间:
2020-07-04 01:14:59
阅读次数:
83
一、归并排序 要排序一个数组,先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起。如下图: 重点: 归并排序使用的是分治思想。分治,就是分而治之,将一个大问题分解成小的子问题来解决。 分治思想跟递归思想很像,分治算法一般是用递归实现。 分治是一种解决问题的处理思想, ...
分类:
编程语言 时间:
2020-06-21 23:38:44
阅读次数:
74
一、泛型递归 递归 Recursion: 又译为递回,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。 递归一词还较为常用于描述以自相似方法重复事物的过程。 在数学和计算机科学中,递归指由一种(或多种)简单的基本情况定义的一类对象或方法,并规定其他所有情况都能被还原为其基本情况。 斐波那 ...
分类:
编程语言 时间:
2020-06-15 22:46:48
阅读次数:
75
1. 分解: 对这k个子问题分别求解。如果子问题的规模仍然不够小,则再划分为k个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止。 2. 合并: 将求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原来问题的解。 3. 分治算法的使用条件: 分治法所能解决的问题一 ...
分类:
编程语言 时间:
2020-06-10 13:19:11
阅读次数:
164
分治算法 所谓分治就是指分而治之,即将较大规模的问题分解成几个较小规模的问题,通过对较小规模问题的求解达到对整个问题的求解。当我们将问题分解成两个较小问题求解时的分治方法称之为二分。 你们玩过猜数字的游戏吗?你的朋友心里想一个 1000 以内的正整数,你可以给出一个数字 x ,你朋友只要回答“比 x ...
分类:
其他好文 时间:
2020-06-05 14:54:15
阅读次数:
66
一.分治算法 一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序, ...
分类:
编程语言 时间:
2020-06-04 15:43:44
阅读次数:
104
点分治 1. 1 算法概述 点分治,是一种针对可带权树上简单路径统计问题的算法。本质上是一种带优化的暴力,带上一点容斥的感觉。 注意对于树上路径,并不要求这棵树有根,即我们只需要对无根树进行统计。接下来请把无根树这一关键点牢记于心。 1.2 问题引入 给定一棵树,树上的边有权值,给定一个阈值k,请统 ...
分类:
其他好文 时间:
2020-05-29 17:55:50
阅读次数:
63
解决实际问题 第一步: 理解 先讲出来, 画图 第二步:计划 计划很重要,最好写出来; 第三步:分解 分治算法(把复杂的大问题分解成很多小问题) 任务->子任务->结果归并 第四步: 卡壳 重复看问题,站到旁观者看问题,请教同事; 最后:练习 ...
分类:
其他好文 时间:
2020-05-12 13:47:54
阅读次数:
49
分治算法思想 将问题分为k个子问题,对这k个子问题分别求解。如果子问题的规模仍然不够小,则每个子问题再划分为k个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止。 问题分析 这个问题的时间复杂度我似懂非懂,想知道其中的具体过程的请自行百度。 对于两个数字X、Y,传统计算方式的时间复 ...
分类:
编程语言 时间:
2020-04-30 11:55:12
阅读次数:
109