自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 VIM 实用技巧

:h vimtutor:进入 VIM 内置文档vim -u NONE -N:使用 VIM 的出厂配置;-u NONE 标志让 VIM 在启动时不加载 vimrc,这样,定制项就不会生效,插件也会被禁用。当不用加载 vimrc 文件的方式启动时,VIM 会切换到 vi 兼容模式,这将导致很多有用的功能被禁用,-N 标志则会使能 nocompatible 选项,防止进入 vi 兼容模式。认识 . 命令. 命令是一个微型的宏。. 命令可以让我们重复上次的普通模式命令;从进入插入模式的那一刻起(例如,输

2021-12-11 22:02:39 1313

原创 409. 最长回文串

给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。回文串长度为偶数时,其每个字符出现次数为偶数,长度为奇数时,除中间字符外,其他字符出现次数也为偶数;所以,要将给定的字符串构造成最长的回文串,只需要统计字符串中出现次数为偶数的

2021-09-12 13:51:06 192

原创 File 类基本使用

java.io.File 类是在 Java 中唯一一个与文件本身有关的程序类,利用这个类用户可以实现文件或目录的处理操作,而使用这个类进行具体的操作前一定要获取一个执行的处理路径。File 类的定义public class Fileextends Objectimplements Serializable, Comparable<File>方法描述public File(String pathname)设置要操作文件的完整路径public File(Str

2021-06-20 22:44:00 211 1

原创 Git 分支

2021-06-06使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。分支简介Git 保存的不是文件的变化或者差异,而是一系列不同时刻的 快照 。在进行提交操作时,Git 会保存一个提交对象(commit object)。 知道了 Git 保存数据的方式,我们可以很自然的想到——该提交对象会包含一个指向暂存内容快照的指针。 但不仅仅是这样,该提交对象还包含了作者的姓名和邮箱、提交时输入的信息以及指向它的父对象的指针。 首次提交产生的提交对象没有父对象,普通提交操作产生的提交对象有

2021-06-06 22:42:10 289

原创 Git 基础

2021-06-06获取 Git 仓库在已存在目录中初始化仓库如果你有一个尚未进行版本控制的项目目录,想要用 Git 来控制它,那么首先需要进入该项目目录中。之后执行:git init该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。 但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪。克隆现有的仓库克隆仓库的命令是 git clone <url> 。 比如,要克隆 Git

2021-06-06 21:14:11 448

原创 Git配置

2021-06-06Git 下载地址初次运行 Git 前的配置Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。 这些变量存储在三个不同的位置:/etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果在执行 git config 时带上 --system 选项,那么它就会读写该文件中的配置变量。 (由于它是系统配置文件,因此你需要管理员或超级用户权限来修改它。)~/.gitconfig 或 ~/.config/git/con

2021-06-06 21:13:15 126

原创 最小生成树

2019-08-25Kruskal(克鲁斯卡尔)算法时间复杂度:O(nlog⁡n)O(n\log n)O(nlogn)(nnn为边的数目),适用于稀疏图。Prim(普里姆)算法时间复杂度:O(n2)O(n^2)O(n2)(nnn为边的数目),适用于稠密图。

2020-08-22 13:26:21 99

原创 图的定义和术语

2019-08-27

2020-08-22 13:26:01 93

原创 图的存储结构

2019-08-27

2020-08-22 13:25:48 76

原创 图的遍历

2019-08-27

2020-08-22 13:25:29 81

原创 有向无环图(DAG)

2019-08-27

2020-08-22 13:25:03 261

原创 最短路径

2019-08-27

2020-08-22 13:24:41 80

原创 树和森林

2019-08-26

2020-08-22 13:23:54 121

原创 二叉树

2019-08-26

2020-08-22 13:23:30 88

原创 赫夫曼树(最优二叉树)

2019-08-27

2020-08-22 13:23:06 95

原创 二叉排序树

2019-08-27

2020-08-21 06:52:00 81

原创 平衡二叉树(AVL)

2019-08-27

2020-08-21 06:51:08 88

原创 B树

2019-08-27

2020-08-21 06:50:18 71

原创 平均查找长度(Average Search Length)

2019-08-27轻松解决不同关键字序列构成的二叉排序树ASL(平均查找长度)(成功)不同问题

2020-08-21 06:45:07 3854

原创 哈希表

2019-08-25

2020-08-21 06:44:35 77

原创 二分查找

2019-06-14代码实现public class binarySearch { public int binarySearch(int[] array,int key) { int low = 0; int high = array.length - 1; while (low <= high) { //注意结束条件 int mid = (low + high) / 2; if (arra

2020-08-21 06:43:57 55

原创 插值查找

2019-07-17我们在使用二分查找的时候,会有一个问题:为什么一定是要二分,不能是四分、八分吗?而且,打个比方,如果我们要在字典中查找zoo这个单词,我们一般的做法都会是直接翻到字典的最后面,而不是从中间翻开。而插值查找则与此类似,它是一种有目的的查找。在二分查找中,mid=low+high2mid = \frac{low + high}{2}mid=2low+high​,我们可以对这个公式做个变形,得到mid=low+high+low−low2=2low+high−low2=low+1

2020-08-21 06:43:27 589

原创 斐波那契查找

2019-07-17斐波那契数列,又称黄金分割数列,因数学家列昂纳多·斐波那契以兔子繁殖为例而引入,故又称为”兔子数列“,指的是这样一个数列:1、1、2、3、5、8、13、21、34、… ;在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n>=3,n属于正整数)。斐波那契数列与黄金分割比的关系随着数列项数的增加,前一项与后一项之比越来越逼近黄金分割的数值0.6180339887…什么是斐波那契查找斐波那契查找就是在二

2020-08-21 06:42:43 1494 1

原创 归并排序

2019-06-16思想:先实现一个数组的中间位置“断裂”为两个子数组,利用索引实现,一直到每一个都被分开;直到最后两个数据都被分开后,然后借助辅助数组实现排序与合并操作;最后递归返回到最初的时候,便实现了整个递归排序归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的,然后再把有序子序列合并为整体有序序列[2]。代码实现如下:public class MergeSort { public vo

2020-08-21 06:41:48 490

原创 希尔排序——简单选择排序

2019-06-29希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。1.首先确定分的组数:length2\frac{length}{2}2length​;2.然后对组中的元素进行插入排序;3.然后继续将 length2\frac{length}{2}2length​,重复第一二步,直到 length = 0为止。/* * @Date 2019/8/7 0:3

2020-08-21 06:40:47 339

原创 简单选择排序

2019-06-30基本思想:每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序。1.遍历整个序列,将最小的数放在最前面。2.遍历剩下的序列,将最小的数放在剩下序列的最前面。3.重复第二步,直到只剩下一个数。思路:1.首先确定循环次数,并且记住当前数字和当前位置。2.将当前位置后面所有的数与当前数字进行对比,小数赋值给key,并记住小数的位置。2.比对完成后,将最小的值与第一个数的值交换。重复2、3步。publ

2020-08-20 06:20:29 280

原创 堆排序

2019-07-01图解排序算法(三)之堆排序堆排序是对简单选择排序的优化堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlog⁡2n)O(n\log_2n)O(nlog2​n),它也是不稳定排序。堆的定义同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组中就是下面这个样子堆是一个完全二叉树大顶堆:arr[i] >= arr[2i+1] && arr[i] >= arr[2i+

2020-08-20 06:19:23 61

原创 快速排序——交换排序

2019-06-14快速排序(不稳定)具体做法附设两个指针low和high,初值分别指向第一个记录和最后一个记录,设枢轴为key;1. 从high 所指位置起向前搜索,找到第一个不大于基准值的记录与枢轴记录相互交换;2. 从low 所指位置起向后搜索,找到第一个不小于基准值的记录与枢轴记录相互交换。3. 重复这两步直至low=high为止。可以证明,函数(Quicksort)的平均计算时间是O(nlog⁡2n)O(n\log_2n)O(nlog2​n)。实验结果表明:就平均计算时间而言

2020-08-20 06:16:25 868

原创 冒泡排序——交换排序

2019-07-021.将序列中所有元素两两比较,将最大的放在最后面。2.将剩余序列中所有元素两两比较,将最大的放在最后面。3.重复第二步,直到只剩下一个数。代码实现public class bubbleSort { public void bubbleSort(int[] a) { int length = a.length; int temp; //控制比较的趟数,每趟把最大的元素浮动到末尾,共需length-1趟

2020-08-20 06:14:30 168

原创 桶排序

2019-07-13分类排序算法数据结构数组最坏时间复杂度O(n2)O(n^2)O(n2)平均时间复杂度O(n+k)O(n+k)O(n+k)最坏空间复杂度O(n∗k)O(n*k)O(n∗k)桶排序(Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使

2020-08-20 06:13:29 75

原创 基数排序

2019-07-13将所有的数的个位数取出,按照个位数进行排序,构成一个序列。将新构成的所有的数的十位数取出,按照十位数进行排序,构成一个序列。代码实现public class RadixSort { public void radixSort(int[] array) { //首先找出最大的数; int max = array[0]; for (int i = 1; i < array.length; i++)

2020-08-20 06:12:18 85

原创 2-路插入排序——基于折半插入排序

2019-08-08代码/** * @Date: 2019/8/8 08:22 * @Description: 2-路插入排序 * 需要注意first指针和end指针移动时的数组越界问题 */public class Path2InsertionSort { public void path2InsertionSort(int[] arr) { int length = arr.length; int[] d = new int[length

2020-08-20 06:11:05 191

原创 折半插入排序——基于直接插入排序

2019-08-07代码实现/** * @Date: 2019/8/7 09:08 * @Description: 折半插入排序,对直接插入排序中 * i前面的基本有序序列使用折半查找来寻找合适的插入位置 */public class BinsertSort { public void binsertSort(int[] a) { int length = a.length;//数组长度,将这个提取出来是为了提高速度 int insertNu

2020-08-20 06:10:02 181

原创 直接插入排序

2019-06-27把新的数据插入到已经排好的数据列中对于一个无序数组而言,从第二个数开始选定并向后遍历,比较第二个数与它前面的数,若小于它前面的数则把他前面的数向后移动,最后把该数放入合适的位置。代码实现/* * @Date 2019/8/7 8:33 * @Description * 1.将第一个数和第二个数排序,然后构成一个有序序列 * 2.将第三个数插入进去,构成一个新的有序序列。 * 3.对第四个数、第五个数……直到最后一个数,重复第二步。 **/public cl

2020-08-20 06:08:55 68

原创 排序算法稳定性分析及其意义

2019-08-05排序算法各种排序方法的性能比较排序算法稳定性分析稳定性的定义在一张大表内包含了整个年级所有的班的同学的考试成绩,当然为了区别每个同学是来自哪个班的,相应的也有班级这个字段来标识。现在,我们依据总成绩这个字段来将全年级的同学进行一个排名,排序的结果当然是各个班级的学生穿插在一起,大致如下表所示:姓名班级成绩张三295李四193王五290赵六380丁七370…… …… ……在得到这样

2020-08-20 06:06:54 315

原创 IO流

2019-07-30IO操作File类是在整个java.io包中唯一一个与文件本身操作有关的类,文件本身操作指的是文件的创建、删除、重命名等。但是如果要进行File类操作那么必须设置好要操作的文件或文件夹的路径,使用如下构造方法:·构造方法:public File(String pathname),传入完整路径·构造方法:public File(String parent,String child),传入父路径和子路径基本的文件操作:·创建新的文件:public boolean creat

2020-08-19 20:29:18 105

原创 常用的转义字符

2019-08-25转义字符含义ASCII码值\n回车换行符。显示该字符时,光标移到下一行的行首10\r回车符。显示该字符时,光标移到当前行的行首13\t制表符。显示该字符时,光标向右移动一个制表位9\v竖向跳格11\b退格8\f走纸换页12\a鸣铃7\\反斜杠字符\92\'单引号符39\"双引号符34\ddd1~3位八进制数所代表的字符,d的值可以是0~7的任何数字\xhh

2020-08-19 20:25:58 5944

原创 运输层及 UDP 协议

2019-09-07告知你不为人知的UDP-疑难杂症和使用UDP概述用户数据报协议 UDP 只在数据报服务上增加了复用和分用的功能以及差错检测的功能;UDP 的传输效率比 TCP 高。UDP 的主要特点是:UDP 是无连接的,即发送数据之前不需要建立连接(当然,发送数据结束时也没有连接可释放),因此减少了开销和发送数据之前的时延。UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表(这里面有许多参数)。UDP 是面向报文的。发送方的 UDP 对应用程序交下来的报文

2020-08-19 20:23:28 286

原创 CRC 检验

2019-09-07现实的通信链路都不会是理想的。这就是说,比特在传输过程中可能会产生差错; 1 可能会变成 0,而 0 也可能变成 1。这就叫做比特差错。比特差错是传输差错中的一种。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER(Bit Error Rate)。误码率与信噪比有很大的关系。如果设法提高信噪比,就可以使误码率减小。实际的通信链路并非是理想的,它不可能使误码率下降到零。因此,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层广泛

2020-08-19 20:22:32 2028

原创 操作系统之进程和线程

2019-09-08进程的概念程序(program)描述计算机所要完成的具有独立功能的,并在时间上按严格次序前后相继的计算机操作序列集合,是一个静态的概念。把一个具有独立功能的程序独占处理机直至最终结束的过程称为程序的顺序执行。程序的并发执行:一组在逻辑上互相独立的程序或程序段在执行过程中,其执行时间在客观上互相重叠,即一个程序段的执行尚未结束,另一个程序段的执行已经开始的这种执行方式。程序的并发执行不同于程序的并行执行。程序的并行执行是指一组程序按独立的、异步的速度执行。并行执行不等于时间上的重

2020-08-19 20:21:24 251

空空如也

空空如也

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

TA关注的人

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