自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 问答 (1)
  • 收藏
  • 关注

原创 [IDEA最新]JDK下载及配置

最新JDK下载及配置方法

2022-07-10 16:31:15 10196 5

原创 float、double详解

快速了解浮点类型数据范围、精度、存储格式。

2022-07-10 14:01:39 679

原创 前中后序遍历二叉树

前中后序遍历二叉树​ 前中后序遍历是查找二叉树的一种规定顺序。简介前中后序:​ 前:从二叉树根部开始,优先输出根节点,在依次遍历左、右支。(根左右)​ 中:从二叉树根部开始,优先遍历左支,直至没有左支(或已输出)输出当前根节点,最后遍历右支。(左根右)​ 后:从二叉数根部开始,优先遍历左支,再遍历右支,最后输出没有左右支(或已输出)的根节点。(左右根)算法思想:利用递归,对每一个节点/子节点进行遍历直至节点为空。递归就没啥好说的 ,直接看代码及注释。算法代码:/**二叉树 结构体 *

2021-03-23 20:29:45 244

原创 归并排序

归并排序算法目的:将无序数列排为有序数列。动态演示:.算法思想:利用分治法,将待排序数组不断细分,最后利用递归从小至大合并回原来摸样。算法代码:时间 O(n*log n) 空间O(n)#include<iostream>#include<vector>using namespace std;//归并排序 void guibing(vector<int>& arr) { int len = arr.size(); //拆终点判

2021-03-23 15:15:57 121

原创 快速排序

快速排序算法目的:​ 一种将无序数组的某个区间范围内的元素排列成有序的。算法思想:​ 通过递归与分治思想完成算法​ 分治:将待排序数组区间不断缩小​ 递归:对缩小的区间再进行递归排序算法主要分两部分:1、先将数组相对数组某一个元素分为两部分(前大后小 --由排序递增递减而定 )先将对比值取出设定左右索引 分别从左遍历、从右遍历 (结束条件 : 左索引不小于右索引 )当其值不满足规定时 交换两值将对比值放入左右索引的位置2、将这左右两部分数组,进行递归操作 (递归终止条件为左索引初

2021-03-22 16:44:43 129

原创 剑指Offer 13-16题解

剑指Offer 13-16题解目前我做过的剑指Offer…剑指Offer 13. 机器人的运动范围地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个

2021-03-19 14:17:21 159

原创 剑指Offer 09-12题解

剑指Offer 09-12题解目前我做过的剑指Offer…剑指Offer 09. 用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )来源:力扣(LeetCode)思路:一个栈用作插入 (即队列入队)appendTail() 一个栈用于删除(即队列出队)deleteHead()代码:/** *

2021-03-19 14:16:47 111

原创 剑指Offer 03-07题解

剑指Offer 03-07题解目前我做过的剑指Offer…剑指Offer 03. 数组中重复的数字在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。来源:力扣(LeetCode)方法一: 哈希表采用哈希表储存数字出现的的次数,当其大于1时,则表示该数字重复出现了。代码 : 时间O(n) 空间O(n)class Solution {pub

2021-03-19 14:15:10 63

原创 蓝桥小蓝锻炼身体

蓝桥小蓝锻炼身题目:小蓝每天都锻炼身体。正常情况下,小蓝每天跑1千米。如果某天是周一或者月初(1日),为了激励自己,小蓝要跑2千米。如果同时是周一或月初,小蓝也是跑2千米。小蓝跑步已经坚持了很长时间,从2000年1月1日周六(含)到2020年10月1日周四(含)。请问这段时间小蓝总共跑步多少千米思想:从第一天开始跑一直跑到你说停的那一天。注意闰年的二月,每天里程加一,特殊额外加一(周一或月初)。解法代码:#include<iostream>using namespace std;

2021-03-16 22:19:26 1714

原创 堆排序

堆排序算法目的:利用堆的数据结构实现排序。算法思想:堆排序是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:从根节点出发的任意一条之路都是有序的(顺序由堆类别而定)。两部分:建堆和拆堆建堆:从堆尾增加元素。比较其所在支路的前辈元素,将其交换至适当位置。拆堆:取走对顶元素(更具建立过程可知,堆顶肯定最大或最小)将堆尾元素放入堆顶从堆顶向下判断放入适当的位置(每次只用判断其与其左右子树较大或较小的值进行交换)(相当于重组堆,使其还是大

2021-03-16 14:02:55 722 5

原创 简述TCP四次挥手,看不懂算我输!

TCP四次挥手四次挥手其原理与三次握手基本相同,但其要保证连接中的数据都传输完成。所以 3—>4三次握手简介:https://blog.csdn.net/qq_26463845/article/details/114771081还是举打电话的例子吧(这个好理解,不是偷懒)四次挥手的过程与这次通话基本类似。过程就是如此。与例子结合一下:为什么说他和三次握手其实基本相同呢(个人理解)因为当客户端请求关闭连接的时候,如若数据传输都完成了,上图 巴拉巴啦 的过程就不存在了,是不是就可以直

2021-03-14 01:49:05 335 3

原创 简述TCP三次握手,看不懂算我输!

TCP 三次握手举个例子简单描述下TCP的三次握手:就举打电话的列子吧。TCP三次握手就是如此。通过彼此之间发送三个包(过程就如上面对话一样),来确认client与server之间连接是否互通。与上面的例子对应一下:TCP报文结构报文内容简介TCP端口号:16位源端口、目的端口,刚好对应端口的范围 0~65535(2^16-1)其是 tcp 连接的四个要素(源IP、目的IP 、源端口、目的端口)的两个要素序号: seq占32位,用来标识从TCP源端向目的发送的字节流,发起方发送

2021-03-14 01:06:09 364

原创 c++11的新特性简介

C++11的新特性1. 指针、智能指针:nullptr:​ 出现原因:原来NULL因编译器不同可能是0,也可能是(void*),且( void *)不能隐式转化为其他类型的空指针,需要强转。​ nullptr作用:其类型为nullptr_t ,其可以隐式转换为所有类型的空指针,解决NULL的指针问题。并且使很好的区分了空指针与0。智能指针:unique_ptr:不共享他的指针,该指针所指的内容无法被值传递,无法建立副本,只能移动unique_ptr。其内容所有者唯一。weak_ptr:

2021-03-13 01:01:32 186

原创 多组时间相加

时间相加题目:给定n组(0<n<=200)时间对,将其相加。(秒与秒相加,分与分相加,小时与小时相加)题解:将时间对数据存到数据数组里,将计算结果存到结果数组里(nums [200][6],result[200][ 3 ])设定一个表示进位的表示falg ,当计算出现进位时 ,更改标志符。针对分秒和小时 设置两个类似的加法函数(原因进制不同)代码:#include<iostream>using namespace std;int jiafa1(int a, int

2021-03-12 17:58:32 384 2

原创 希尔排序

希尔排序算法目的:将无序序列变得有序,其算法算是普通插入排序的优化。解决插入排序在最坏情况的移动次数太多。算法思想:将整个无序序列,按一个不断缩小的缩量(对半缩)分组,在每个组内进行插入排序。算法代码:时间 O(log n * n ) 空间O(1)#include<iostream>#include<vector>using namespace std;//希尔排序算法函数void xier_sort(vector<int>& num

2021-03-12 16:05:09 766

原创 C/C++内存模型及动态内存管理

C/C++内存模型:内存模型有五个区,由高地址到低地址依次:​ 栈——堆——全局/静态存储区——常量存储区——自由存储区栈:​ 1.栈的存储是连续的且被一一记录的。​ 2.内存由编译器在需要时自动分配和释放。​ 3.通常存储为局部变量和函数参数。​ 4.栈运算分配内置于处理器指令集中,效率很高,但内存有限。​ 5.函数体执行结束时这些内存被自动释放。堆:​ 1.堆内申请的东西是随机分配的。​ 2.使用malloc进行分配,free释放。如果没有对内存进行正确的释放,会造成内存泄漏,进而

2021-03-11 23:30:29 609

原创 简单动态规划

简单动态规划简单背包问题 :假设你要去野营。你有一个容量为6磅的背包,需要决定该携带下面的哪些东西。其中每样东西都有相应的价值,价值越大意味着越重要:1 水(重3磅,价值10);2 书(重1磅,价值3);3 食物(重2磅,价值9);4 夹克(重2磅,价值5);5 相机(重1磅,价值6)。请问携带哪些东西时价值最高?算法思想:两部分:第一部分: 细分背包,将背包从最小单元逐渐增加满包。第二部分: 增加物品,将物品个数从单一逐渐增加到全部。第一部分:主要是分析背包所能有的大小

2021-03-11 23:27:13 1318

原创 二分法查找

二分法查找算法目的:​ 其输入是一个有序的元素列表。如果要查找的元素包含在列表中,二分查找返回其位置;否则返回-1。算法思想:​ 通过折中(二分),缩小其被查找的范围,来查询其值的位置。在数据量较大时,更适用。设定三个索引,分别为 L (左边界索引) 、R (右边界索引)、 LR (中间索引) 将中间索引 LR 所对应的数组值与查找值 k 进行比较当其值相等时 ----表示找到其位置 返回索引LR当不相等时 判断A[LR] 是 比 k 大还是小通过判断结果更新 左右索引当左索引(L)

2021-03-11 23:20:35 1241

原创 vector底层结构简介

vectorvector简介:vector实际上是一个泛型动态类型顺序表,底层数据存储在一段连续的空间上。vector优缺:优:由于其顺序结构,它支持随机访问,读取更改效率很高。缺:顺序结构随机插入删除时,需要挪动他元素,元素越多效率越低。 ( 还会使迭代器失效)vector底层结构:一个顺序表。vector迭代器:容器中内置迭代都在 [ begin() , end() ) 区间内。vector扩容:当数据量达到容器边缘时(end() == 边界),容器会自

2021-03-11 18:35:17 3583

原创 list使用及底层结构刨析

listlist简介​ list是一个双向循环链表,他的插入删除操作用时间是常数级别(O(1)),对空间上的运用精准,不浪费一点空间,list 简单函数使用:初始化: list<Type> a; //定义一个Type类型的链表a list<Type> a(10); //定义一个Type类型的链表a,并设置初始大小为10 l

2021-03-10 23:42:55 995

原创 选择排序

选择排序算法选择排序的思想分析及图解…选择排序:(时间复杂度)(稳定性)算法思想:记录待排序数组的第一个元素值和其索引,向后遍历判断他是不是最小值(最大值)如果不是,则更新最小值和其所在位置索引遍历结束后,若索引更新,则交换首元素与更新后索引位置的值接下来的待排序数组为除开第一个元素,剩下的数组,按上述相同方法选择出 后替换直至待排数组大小为一,结束选择排序动态演示:代码:#include<iostream>#include<vector>using

2020-12-22 03:56:49 1284 1

原创 插入排序

插入排序算法插入排序的思想分析及图解…插入排序:(时间复杂度)(稳定性)算法思想:从数组中第二个元素开始,与前面的有序数列元素依次比较,当满足大于前者小于后者时插入其中(若到有序树列首部,则插入队首)重复上述直至遍历到数组末尾插入排序动态演示:代码:#include<iostream>#include<vector>using namespace std;//插入函数定义void insert_sort(vector<int> &ar

2020-12-22 03:46:21 955 1

原创 冒泡排序

冒泡排序算法冒泡排序的的思想分析及图解…冒泡排序:(时间复杂度)(稳定性)算法思想:遍历比较两个相邻元素的大小,按一个比较规则交换遍历一轮后,得到一个最大/最小元素 ,在数组最前端/最后端按第一步遍历余下的(n-1)个元素,直至余下元素个数为1为止,排序结束冒泡排序过程演示:代码:#include<iostream>#include<vector>using namespace std;//排序类class SORT{public: //

2020-12-22 03:26:57 1053 1

原创 递归 汉诺塔

汉诺塔内涵数据结构为: 栈(先进后出) 算法思想: 递归(调用函数自身)汉诺塔 (输出移动过程:展示递归)题目:在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:(1) 每次只能移动一个盘子;(2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子只能叠在比它大的盘子上。请编写程序,表示将所有盘子从第一根柱子移到最后一根柱子的过程。

2020-12-08 23:03:53 1525

原创 进程 线程 实现多线程

进程 线程 实现多线程小白的浅层认知进程:是一个正在进行的程序,是程序执行的一个实例包括运行中的程序和她所使用到的内存和资源(CPU)是资源分配的基本单位之间相互独立,相互不影响可由一个或多个线程组成线程:进程入口的第一条线程被视为主线程是进程的一条执行路径之间共享所有资源是 调度,分派进程资源的基本单位每个线程都有自己堆栈 (线程中执行的是以一个{ }的程序块)多线程:指一个进程同时有多个线程在执行优点:可同时完成多个任务节省了CPU 周期的浪费,同时提高了应

2020-12-06 00:25:40 168

空空如也

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

TA关注的人

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