算法和数据结构
xhh22900
upgrading
展开
-
C++、Java、python中的一些常见容器总结
主要参考:《数据结构与算法/leetcode/lintcode题解》、C++参考手册、《疯狂Java》文章目录<数据结构与算法>学习笔记(一)基础知识-基本数据结构7.常见容器学习1. C++1.顺序容器2.关联容器3. 无序关联容器4.容器适配器堆2. Java1. Set2. List集合3.Queue集合4. Map5. Collections工具类3. pythoncollections<数据结构与算法>学习笔记(一)基础知识-基本数据结构7.常见容器学习1. C++原创 2020-08-14 04:49:44 · 346 阅读 · 0 评论 -
二叉树、霍夫曼编码和红黑树的C++实现
主要参考:《数据结构与算法/leetcode/lintcode题解》、《算法导论》4. 二叉树参考:《算法导论》二叉树每个节点有最多两个子树,子树有左右之分,可以实现二叉查找树和二叉堆。二叉树有个规律,如果一颗二叉树的终端节点数为n0n_0n0,度为2的节点数为n2n_2n2,则有n0=n2+1n_0=n_2+1n0=n2+1。二叉树的遍历通常有三个步骤:对当前节点进行操作、遍历左边子节点、遍历右边子节点。访问节点的不同顺序形成了不同的遍历方式。树的遍历通常是用递归的思想来理解和实现的。遍原创 2020-08-04 19:21:54 · 268 阅读 · 0 评论 -
算法珠玑(1)线性表--算法题解<1>数组
文章目录算法珠玑(1)线性表--算法题解1.数组(1)Remove Duplicates from Sorted Array(2)Remove Duplicates from Sorted Array -2(3)Two Sum(4)3Sum(5)3Sum Closest(6)4Sum(7)Remove Element(8)Move Zeroes(9)Next Permutation(10)Perm...原创 2020-04-10 23:36:03 · 437 阅读 · 0 评论 -
算法导论(5)贪心算法
文章目录算法导论(5)贪心算法1.活动选择问题贪心选择2.贪心算法原理3.赫夫曼编码算法导论(5)贪心算法对于很多最优问题,相比较使用动态规划算法求最优解,贪心算法便是更简单更高效的选择。它在每一步都做出当时看起来是最佳的选择,即局部最佳的选择,以此来求得全局最优解。虽然对于很多算法可以求得最优解,但贪心算法并不保证得到最优解。我们先看下面的一个实例。1.活动选择问题这是一个调度竞争共...原创 2020-03-23 23:38:32 · 693 阅读 · 0 评论 -
算法导论(4)动态规划
文章目录算法导论(4)动态规划1.钢条切割问题描述用动态规划方法求解最优钢条切割问题2.矩阵链乘法问题描述应用动态规划方案3.动态规划原理最优子结构重叠子问题备忘算法导论(4)动态规划动态规划通常用来解决最优化问题。与分治方法相似,都是通过组合子问题的解来求解原问题。不同之处在于,分治方法将问题划分为互不相交的子问题,递归地求解子问题,此时如果子问题出现重叠的话就会反复求解,而动态规划对每个子...原创 2020-03-20 00:03:55 · 368 阅读 · 0 评论 -
算法导论(1)排序算法(三)
文章目录算法导论(1)排序算法(三)1.计数排序2.基数排序(radix sort)3.桶排序前面两个部分为:算法导论(1)排序算法(一)算法导论(1)排序算法(二)算法导论(1)排序算法(三)前面的排序都由一个有趣的性质:在排序的最终结果中,各元素的次序依赖于他们之间的比较。我们将这样的算法称为比较排序。接下来我们将讨论三种线性时间复杂度的排序算法:计数排序、基数排序和桶排序。这些算...原创 2020-03-15 23:40:21 · 199 阅读 · 0 评论 -
算法导论(1)排序算法(二)
文章目录算法导论(1)排序算法(二)1.堆排序维护堆的性质建堆堆排序算法优先队列(priority queue)2.快速排序快速排序的性能分析快速排序的随机化版本算法导论(1)排序算法(二)接着之前的来:算法导论(1)排序算法(一)前面我们已经介绍了两种排序算法,插入排序和归并排序。插入排序最坏情况下可以在Θ(n2n^2n2)时间内将n个数排好序,对于小规模输入,插入排序是一种非常快的原址排...原创 2020-03-14 15:57:08 · 216 阅读 · 0 评论 -
算法导论(3)概率分析和随机算法
算法导论(3)概率分析和随机算法1.雇用问题首先我们来考虑一个简单的问题,雇用问题。加入你需要雇用一名新的办公经理,你需要在n个候选人中挑选。我们建立理想化模型,假设雇用问题以如下流程进行:HIRE-ASSISTANT(n)best =0for i=1 to n interview candidate i if candidate i is better than can...原创 2020-03-13 00:18:02 · 489 阅读 · 0 评论 -
算法导论(2)分治策略
文章目录算法导论(2)分治策略1.最大子数组问题分治策略求解2.矩阵乘法的Strassen算法分治算法Strassen方法算法导论(2)分治策略分治策略递归地求解一个问题时,每层递归中实行三个步骤:分解:将问题划分为一些形式与原问题一致但规模更小的子问题解决:递归地求解出子问题。如果子问题的规模足够下则通知递归直接求解合并:将子问题的解合成原问题的解1.最大子数组问题假如你获得投...原创 2020-03-11 23:09:54 · 371 阅读 · 0 评论 -
算法导论(1)排序算法(一)
文章目录算法导论(1)排序算法(一)1.插入排序(增量法)分析算法2.归并排序(分治法)分析算法算法导论(1)排序算法(一)排序问题:输入:包含n个数的一个序列<a1,a2,...,an><a_1,a_2,...,a_n><a1,a2,...,an>输出:输出一个序列的排序<a1′,a2′,...,an′>,满足a1′≤a2′≤...原创 2020-03-10 14:57:29 · 263 阅读 · 0 评论 -
字符串和链表--数据结构与算法--学习指南
文章目录<数据结构与算法>学习笔记(一)基础知识-基本数据结构1.String(字符串)1.1 python1.2 Java1.3 C++2. Linked List(链表)1. C++2. Java3. python3. 双向链表C++版本<数据结构与算法>学习笔记(一)基础知识-基本数据结构主要参考:《数据结构与算法/leetcode/lintcode题解》、《胡伟煌 数据结构 学习笔记》1.String(字符串)总结一些在C++、Java、Python中对于字符串的一些原创 2020-07-31 03:40:24 · 1845 阅读 · 0 评论