算法分析与设计
qq_1144521901
这个作者很懒,什么都没留下…
展开
-
Brute force and exhaustive search
Brute force and exhaustive search(蛮力和彻底搜索) Brute force is a straightforward approach to solving a problem, usually directly based on the problem statement and definitions of the concep...原创 2019-07-30 20:34:15 · 1351 阅读 · 0 评论 -
背包问题(knapsack Problem)----- 动态规划
背包问题---动态规划一、问题描述:有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? (物体不可以拆分,装就必须装完整的。)二、总体思路:根据动态规划解题步骤(问题抽象化、建立模型、寻找约束条件、判断是否满足...原创 2019-08-05 09:49:05 · 1071 阅读 · 0 评论 -
Sort(3) ----- Insertion Sort 插入排序
(由于本文参考多篇文章,无法注明转载出处, 因此没有标准转载,特此说明)插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。插入排序方法分直接插入排序和折半插入排序两种,这里只介绍直接插入排序。演示了对4个元素进行直接插入排序的过程,共需要(a),(b),(c)三次插入。 s...原创 2019-08-01 20:17:21 · 172 阅读 · 0 评论 -
Sort(4)---- Quick Sort 快速排序
(由于本文参考多篇文章,无法注明转载出处, 因此没有标准转载,特此说明)快速排序(Quick Sort)使用分治法策略。它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序流程:(1) 从数列中挑...原创 2019-08-01 21:51:17 · 152 阅读 · 0 评论 -
Depth First Search ---- 深度优先遍历(DFS)
Depth First Search ---- 深度优先遍历1.相关基础:1.1 图的存储结构 基于二维数组的邻接矩阵表示 + 基于链表的的邻接表。说明: 如下为无向图的邻接矩阵的表示,V[ i ][ j ] = 1 表示连接;V[ i ][ j ] = 0表示不连接; ...原创 2019-08-08 22:05:44 · 660 阅读 · 0 评论 -
Breadth-First Search ------ 广度优先搜索算法(BFS)
Breadth-First Search ------ 广度优先搜索算法所谓广度优先遍历,类似树的按层次遍历,就是一层一层的,向下遍历,层层堵截。1.广度优先搜索的思想: ① 访问顶点vi ; ② 访问vi 的所有未被访问的邻接点w1 ,w2 , …wk ; ③ 依次从这些邻接点(在步骤②中访问的顶点)出发,访问它们的所有未被访问的邻...原创 2019-08-08 22:53:43 · 733 阅读 · 0 评论 -
背包问题(Knapsack Problem) ----- 蛮力法
蛮力法 ----- 背包问题(Knapsack Problem)1.问题描述: 有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?(物体不可以拆分,装就必须装完整的。) Given n items of known weights w 1 , w 2 , . . . , w n a...原创 2019-08-06 21:46:53 · 2044 阅读 · 0 评论 -
Search(2) ----- 二分查找
二分查找1.定义折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高。但是该算法的使用的前提是静态查找表中的数据必须是有序的。2.例子例如,在{5,21,13,19,37,75,56,64,88 ,80,92}这个查找表使用折半查找算法查...原创 2019-08-09 18:40:10 · 419 阅读 · 0 评论 -
Sort(2) ---- Bubble Sort 冒泡排序
Bubble Sort1.原理:比较两个相邻的元素,将值大的元素交换至右端。2.思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前...原创 2019-07-30 20:32:46 · 197 阅读 · 0 评论 -
算法-----sort排序(汇总)
排序的稳定性和复杂度 不稳定: 选择排序(selection sort)— O(n2) 快速排序(quicksort)— O(nlogn) 平均时间, O(n2) 最坏情况; 对于大的、乱序串列一般认为是最快的已知排序 堆排序(heapsort)— O(nlogn) 希尔排序(shell sort)— O(nlogn)...原创 2019-07-30 20:33:48 · 163 阅读 · 0 评论 -
Sort(1)---- Selection Sort 选择排序
选择排序a)原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。也就是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。(这里只介绍常用的简单选择排序)b)简单选择...原创 2019-07-30 19:24:57 · 333 阅读 · 0 评论 -
动态规划的典型分析与代码实现----主java
动态规划1.矩阵连乘2.电路布线3.资源分配4.流水线问题5.背包问题 ---- 变型6.最长公共子序列7.最大字段和8.最小硬币找零数4.8还会更新动态规划代码:1. 矩阵连乘:2. package matrix;3. 4. public class matrix {5. 6. //计算最小的次数原创 2017-11-28 09:27:29 · 1475 阅读 · 0 评论 -
Leet Code OJ 1. Two Sum [Difficulty: Easy]---java
题目: 给定一个整形数组和一个整数target,返回2个元素的下标,它们满足相加的和为target。 你可以假定每个输入,都会恰好有一个满足条件的返回结果。Example: Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1]. 两种方法:...原创 2018-09-05 22:51:02 · 170 阅读 · 0 评论 -
Leet Code OJ 8. String to Integer (atoi) [Difficulty: Easy]
题目也可以参考:https://leetcode-cn.com/problems/string-to-integer-atoi/description/题目描述:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数atoi()。 输入:输入可能包含多个测试样例。对于每个测试案例,输入为一个合法或者非法的字符串,代表一个整数n(1<= n<=184467...原创 2018-09-06 00:35:31 · 179 阅读 · 0 评论 -
二分查找 ----- Leetcode-374. 猜数字大小
题目参考:https://leetcode-cn.com/problems/guess-number-higher-or-lower/description/我们正在玩一个猜数字游戏。 游戏规则如下:我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。每次你猜错了,我会告诉你这个数字是大了还是小了。你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结...原创 2018-09-06 13:31:00 · 396 阅读 · 0 评论 -
leetcode-----有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false...转载 2018-09-06 20:44:49 · 230 阅读 · 0 评论 -
search寻找
查找:就是在数据中寻找特定的值,这个值称为“关键码(key)”。查找的目的:就是为了确定数据中是否存在与关键码相同的数据。一句数据是否已排序,查找的方法也会不同。以下给出了四种不同的查找方法。顺序查找法二分查找(折半查找法)裴波那契查找法插补查找法其中顺序查找法是使用未经排序的数据。另外三种方法都需要将数据先排序好后,然后才能使用。除了上述的四种查找方法外,...原创 2019-08-02 15:57:38 · 313 阅读 · 0 评论 -
Search1 ----- 裴波那契查找法(Fibonacci Search)
(由于本文参考多篇文章,无法注明转载出处, 因此没有标注转载,但在下方注明了所有参考过的网址,特此说明)3.裴波那契查找法(Fibonacci Search)3.1)斐波那契数列: 斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... 如果设F(n)为该数列的第n项(n∈N*),那么这句话可以写成如下形式::F(n)=...原创 2019-08-02 15:55:29 · 472 阅读 · 0 评论 -
the design and analysis of algorithms ---- 1.introduction
1. 什么是算法An algorithm is a sequence of unambiguous instructions for solving a problem, i.e., for obtaining a required output for any legitimate input in a finite amount of time.算法是一系列用于解决问题的明确指令,即在...原创 2019-07-30 19:17:16 · 635 阅读 · 0 评论 -
Decrease-and-Conquer
第四章 Decrease-and-Conquer增量方法:自下而上的变化通常是以迭代方式实现;以问题的一个小地方开始。The bottom-up variation is usually implemented iteratively, starting with a solution to the smallest instance of...原创 2019-08-09 20:30:40 · 502 阅读 · 0 评论