自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 贪心算法——集合覆盖问题

​假设在下面需要付费的广播台,以及广播台信号可以覆盖的地区。如何选择最少的广播台,让所有的地区都可以接收到信号。

2022-07-18 12:12:22 713 3

原创 KMP算法——字符串匹配问题

KMP 算法是一个解决模式串在文本串是否出现过,如果出现过,输出最早出现位置的经典算法。Knuth-Morris-Pratt 字符串查找算法,简称为“ KMP算法 ”,常用于在一个文本串 S 内查找一个模式串 P 出现的位置。KMP 算法就利用之前判断过信息,通过一个 next 数组,保存模式串中前后最长公共子序列的长度,每次回溯时,通过 next 数组找到,前面匹配过的位置,省去了大量的时间......

2022-07-18 12:11:31 347

原创 动态规划——背包问题(Knapsack Problem)入门

背包问题主要是指一个给定容量的背包、若干具有一定价值和重量的物品,如何选择物品放入背包使物品的价值最大。其中又分01背包和完全背包(完全背包指的是:每种物品都有无限件可用)

2022-07-16 11:16:26 826

原创 分治算法——汉诺塔(HanoiTower)

分治算法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题···直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅里叶变换(快速傅里叶变换)···...

2022-07-15 12:01:08 974

原创 数据结构——图的创建以及遍历

​ 图是一种数据结构,其中节点可以具有零个或多个相邻元素。两个节点之间的连接称为边。节点也可以称为顶点为什么要有图图的常用概念图的表示方式​ 图的表示方式有两种:二维数组表示(邻接矩阵);链表表示(邻接表)邻接矩阵​ 邻接矩阵是表示图形中顶点之间相邻关系的矩阵邻接表代码演示12.3 图的遍历图遍历的介绍​ 所谓图的遍历,即是对结点的访问。一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略:图的深度优先遍历(Depth First Search)深度优先遍历算法步骤核心代码12.3

2022-07-14 10:48:39 4634

原创 哈希表(Hash table)

​ 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表​ 有一个公司,当有新员工来报道时,要求该员工的信息加入(id,性别,年龄···),当输入该员工的 id 时,要求查找到该员工的所有信息要求​ 不使用数据库,速度越快越好 => 哈希表(散列)...

2022-07-11 17:22:09 211

原创 JAVA常用查找算法

​ 在 JAVA 中,常用的查找有四种9.3 二分查找(Binary Search)注意!​ 二分查找仅适用于有序数组!思路分析代码演示9.4 插值查找(Interpolation Search)插值查找原理介绍代码演示插值查找注意事项斐波那契法(黄金分割法)基本介绍斐波那契原理​ 斐波那契查找原理与前两种相似,仅仅改变了中间节点(mid)的位置,mid不再是中间或者插值得到,而是位于黄金分割点附近,即 对 F(k-1)-1的理解由斐波那契数列 的性质,可以得到 。该式说明:只要顺序表的长度为

2022-07-10 11:32:36 946

原创 排序算法——基数排序(Radix Sorting)

基数排序属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort),顾名思义,他是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的目的

2022-07-09 16:37:26 215

原创 排序算法——归并排序(Merge Sorting)

介绍​ 归并排序是利用归并的思想实现的排序方法,该算法采用经典的分治(divide and conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案“修补”在一起,即分而治之)!!!【后期补图】!!!说明​ 可以看到这种结构很像一棵完全二叉树,本文的归并排序可以采用递归去实现(也可采用迭代的方法去实现)。分阶段可以理解为就是递归拆分子序列的过程代码示例...

2022-07-09 16:35:56 257

原创 排序算法——快速排序(Quick Sorting)

介绍​ 快速排序是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按照此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列代码演示...

2022-07-09 16:34:26 246

原创 排序算法——希尔排序(Shell Sorting)

简单插入排序存在的问题​ 当需要插入的数是较小的数时,后移次数明显增多,对效率有影响希尔排序法介绍​ 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,他是简单插入排序经过改良后的一个更高效的版本,也称为缩小增量排序基本思想​ 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序:随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2022-07-09 16:33:24 282

原创 排序算法——插入排序(Insert Sorting)

基本介绍​ 插入排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的插入排序法思想​ 插入排序的基本思想是:把 n 个待排序的元素看成一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把他的排序码依次与有序元素的排序码进行比较,将他插入到有序表中适当的位置,使之称为新的有序表代码示例...

2022-07-09 16:32:34 694

原创 排序算法——选择排序法(Select Sorting)

基本介绍​ 选择排序也属于内部排序法,是从预排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的选择排序思想​ 选择排序(Select Sorting)也是一种简单的排序方法。它的基本思想是:第一次从中选出最小值,与arr[0]交换,第二次从中选取最小值,与arr[1]交换,···,第i次从中选取最小值与arr[i-1]交换,总共哦通过 n-1 次,得到一个从小到大排列的有序序列规则代码示例...

2022-07-09 16:31:44 2759 1

原创 排序算法——冒泡排序法(Bubble Sorting)

基本介绍​ 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),一次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的旗袍一样逐渐向上冒​ 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明有序,因此要在排序的过程中设置一个标志 FLAG判断元素是否进行过交换。从而减少不必要的比较冒泡排序规则代码示例...

2022-07-09 16:30:34 443

原创 迷宫问题(MAZE)

说明:JAVA代码示例:C++代码示例:

2022-07-07 23:36:36 409

原创 八皇后问题

八皇后问题介绍​ 八皇后问题是一个古老而著名的问题,是回溯算法的典型案例。该问题由国际西洋棋棋手马克斯·贝瑟尔于1848年提出。在8*8格的国际象棋上摆放八个皇后,使其不能相互攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法算法思路分析说明:​ 理论上应该创建一个二维数组来表示棋盘,但是实际上可以通过算法,用一个一维数组即可解决问题。arr[8]={0,4,7,5,2,6,1,3},对应arr下标表示第几行,即第几个皇后,arr[i]=var,var表示第i+1个皇后,放在第i+1

2022-07-07 23:33:37 212

原创 HTML基础

网页有哪些部分组成?我们看到的网页背后本质是什么?前端的代码是通过什么软件转换成用户眼中的页面的?​ 文档类型声明,作用就是告诉浏览器使用哪种HTML版本来显示网页​ 这句代码的意思是:当前页面采取的是HTML5版本来显示网页注意:​ 用来定义当前文档显示的语言​ 其实对于文档来说,定义成en的文档也可以显示中文,定义成zh-CN的文档也可以显示英文​ 这个属性对浏览器和搜索引擎还是有作用的(例如翻译功能)​ 字符集(Character set)是多个字符的集合。一边计算机能够识别和存储各种文字​ 在标

2022-06-30 22:14:01 462

原创 STL算法——常用集合算法(set_intersection、set_union、set_difference)

算法简介:功能描述:函数原型:功能描述:函数原型:功能描述:函数原型:

2022-06-27 21:13:09 119

原创 STL算法——常用算术生成算法(accumulate、fill)

注意:算法简介:功能描述:函数原型:示例:5.5.2 fill功能描述:函数原型:示例:

2022-06-27 21:11:57 226

原创 STL算法——常用拷贝和替换算法(copy、replace、replace_if、swap)

算法简介:功能描述:函数原型:示例:5.4.2 replace功能描述:函数原型:示例:5.4.3 replace_if功能描述:函数原型:示例:5.4.4 swap功能描述:函数原型:示例:

2022-06-27 21:11:00 399

原创 STL算法——常用排序算法(sort、random_suffle、merge、reverse)

算法简介:功能描述:函数原型:示例:5.3.2 random_shuffle功能描述:函数原型:示例:5.3.3 merge功能描述:函数原型:示例:5.3.4 reverse功能描述:函数原型:示例:

2022-06-27 21:10:07 455

原创 STL算法——常用查找算法(find、find_if、adjacent_find、binary_search、count、count_if)

学习目标:算法简介:功能描述:函数原型:示例:5.2.2 find_if功能描述:函数原型:示例:5.2.3 adjacent_find功能描述:函数原型:示例:5.2.4 binary_search功能描述:函数原型:示例:5.2.5 count功能描述:函数原型:示例:5.2.6 count_if功能描述:函数原型:示例:...

2022-06-27 21:09:10 598

原创 STL算法——常用遍历算法(for_each、transform)

算法简介:功能描述:函数原型:示例:5.1.2 transform功能描述:函数原型:示例:

2022-06-27 21:07:01 149

原创 STL函数对象(C++)

概念:本质:特点:4.2 谓词4.2.1 谓词概念概念:4.2.3 二元谓词4.3 内建函数对象4.3.1 内建函数对象意义概念:分类:用法:功能描述:仿函数原型:示例:4.3.3 关系仿函数函数功能:仿函数原型:示例:4.3.4 逻辑仿函数功能描述:函数原型:示例:逻辑仿函数实际应用较少,了解即可...

2022-06-27 21:04:43 77

原创 Map和Multimap容器(C++)

简介:本质:优点:map 和multimap 区别:函数原型:赋值:示例:3.9.3 map 大小和交换功能描述:函数原型:函数原型:3.9.5 map 查找和统计函数原型:3.9.6 map 容器排序主要技术点:

2022-06-27 21:03:03 238

原创 Set和Multiset容器(C++)

简介:本质:set 和multiset 区别:功能描述:构造:赋值:示例:3.8.3 set 大小和交换功能描述:函数原型:3.8.4 set 插入和删除功能描述:函数原型:3.8.5 set 查找和统计功能描述:函数原型:示例:3.8.6 set 和 multiset区别区别:3.8.7 pair 对组创建功能描述:两种创建方式:示例:3.8.8 set 容器排序学习目标:主要技术点:示例1:set存放内置数据类型示例2:set存放自定义数据类型...

2022-06-27 21:02:26 189

原创 List容器(C++)

​ 功能:将数据进行链式存储​ 链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的​ 链表的组成:链表由一系列结点组成​ 节点的组成:一个时存储数据元素的数据域,另一个是存储下一个结点地址的指针域​ STL中的链表是一个双向循环链表​ 由于链表的存储方式并不是连续的内存空间,因此链表list 中的迭代器只支持前移和后移,属于双向迭代器list优点:list缺点:​ List有一个重要的性质,插入操作和删除操作都不会造成原有list迭代器的失效,这才vecto

2022-06-27 21:01:35 700

原创 Python-Pandas基础

​ Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)​ Pandas 最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,主要提供高性能易用数据类型和分析工具Pandas的优点有哪些 ?Pandas预备知识Series函数 同样适用ndarray的操作,但是输出结果仍是Series类型创建Series的几种方法创建DataFrame的几种方法​ pandas数据结构的索引与ndarray的索引类似,但

2022-06-25 11:02:13 1181

原创 Python-NumPy基础

​ NumPy(Numerical Python)是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库为什么要使用NumPy?NumPy模块导入:NumPy支持得数据类型​ 创建数组通常使用array函数array函数详解:查看数组的基本信息arange函数linspace 和 logspace 函数模块填补了Python内建的random模块的不足,可以搞笑生成随机数组无约束条件下生成随机数Numpy随机数NumPy文件读写主要有二进制的文件读写和文

2022-06-24 17:06:51 606

原创 Queue容器(C++)

概念:Queue是一种先进先出(First In First Out,FIFO)的数据结构,他有两个出口队列容器允许从一端新增元素,从另一端移除元素队列中只有对头和对位才可以被外界使用,因此队列不允许有遍历行为队列中进数据称为 — 入队(push)队列中出数据称为 — 出队(pop)功能描述:构造函数:赋值操作:数据存取:大小操作:示例:...

2022-06-21 10:39:30 112

原创 Stack容器(C++)

**概念:**stack 是一种先进后出(First In Last Out,FILO)的数据结构,他只有一个出口栈中只有顶端的元素可以被外界使用,因此栈不允许有遍历行为栈中进入数据称为 — 入栈(push)栈中弹出数据称为 — 出栈(pop)功能描述:构造函数:赋值操作:数据存取:大小操作:示例:...

2022-06-21 10:38:42 298

原创 deque容器(C++)

功能:deque 与vector 区别:deque 内部工作原理:功能描述:函数原型:示例:3.3.3 deque 赋值操作功能描述:容器原型:示例:3.3.4 deque 大小操作功能描述:函数原型: //判断容器是否为空 //返回容器中元素的个数 //重新指定容器的长度为num,若容器变长,则以默认值填充新位置​ //如果容器变短,

2022-06-21 10:38:07 116

原创 Vector容器(C++)

功能:vector与普通数组区别:动态扩展:功能描述:函数原型:示例:3.2.3 vector 赋值操作功能描述:函数原型:3.2.4 vector 容量和大小功能描述:函数原型: //判断容器是否为空 //容器的容量 //返回容器中元素的个数 //重新指定容器的长度为num,若容器变长,则以默认值填充新位置​

2022-06-20 10:55:16 129

原创 String容器(C++)

本质:string 和 char 区别:*特点:​ string 类内部封装了很多成员方法​ 例如:查找find,拷贝copy,删除delete,替换replace,插入insert​ string 查找所分配的内存,不用担心复制越界和取值越界,由类内部进行负责构造函数原型: //创建一个空的字符串 例如:string str;; //使用字符串s初始化 //使用一个string 对象初始化另一个string 对象 /

2022-06-20 10:53:53 74

原创 C++提高编程——2 STL初识

STL 大体分为六大组件:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器容器:置物之所也STL容器就是将应用最广泛的一些数据结构实现出来常用的数据结构:数组、链表、树、栈、队列、映射表等这些容器分为序列式容器和关联式容器两种算法:问题之解法也有限的步骤,解决逻辑或数学上的问题,这一门学科我们叫做算法(Algorithm)算法分为:质变算法和非质变算法质变算法:是指运算过程中会更改区间内得元素的内容。例如拷贝、替换、删除等等非质变算法:是指运算过程中不会更改区间内的元素内容。例如查找、计数、遍历、寻

2022-06-20 10:52:18 151

原创 C++提高编程——1 模板

​ 模板就是建立通用的模具,大大提高复用性模板的特点:函数模板作用:​ 建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表语法:解释:示例:总结:注意事项:示例:2.3 函数模板案例案例描述:示例:2.4 普通函数与函数模板的区别区别:示例:2.5 普通函数与函数模板的调用规则​ 调用规则如下:2.6 模板的局限性局限性:例如:​ 在上述代码中提供的赋值操作,如果传入的a和b是一个数组,就无法实现了再例如:​ 在上述代码中,如果T的数据类型传入的是像

2022-06-17 23:08:07 83

原创 数据结构与算法——栈( Stack )

思路分析:4 链表模拟栈思路分析:5 使用栈完成表达式​ 思路:6 前缀、中缀、后缀表达式(逆波兰表达式)6.1 前缀表达式(波兰表达式)前缀表达式又称波兰表达式,前缀表达式的运算符位于操作数之前举例:对应的前缀表达式就是前缀表达式的计算机求值后缀表达式的计算机求值​ 我们完成一个逆波兰计算器,要求完成如下任务:6.6.5 中缀表达式转换位后缀表达式​ 在前面代码实现的过程中,我们发现后缀表达式适合计算机进行运算,但是人却不太容易写出来,尤其是表达式很长的情况下,因此在开发中,我们

2022-06-15 10:25:08 1947

原创 数据结构与算法——中缀转后缀表达式以及计算

思路分析:判断运算符优先级逆波兰计算器(后缀表达式的计算)后缀表达式的计算机求值思路:

2022-06-15 10:17:34 445

原创 Docker教程及完整讲义(入门级)

​​ Docker可以运行在在MAC、Windows、CentOS、UBUNTU等操作系统上​ 官网:​ 1. yum包更新到最新​ 2. 安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的​ 3. 设置yum源​ 4. 安装docker,出现输入的界面都按 y​ 5. 查看docker版本,验证是否成功1.3 Docker架构镜像(Image):Docker镜像(Image),就相当于是一个root文件系统。比如官方

2022-06-14 22:56:19 7407 9

原创 数据结构与算法——约瑟夫环问题(JosephuRing)

设编号为1,2,...,n的n个人围坐一圈,约定编号为k(1

2022-06-13 09:43:59 904

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除