自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java基础知识|重写+重载|多态|接口+抽象类

java基础文章目录一、方法的重载和重写?二、面向对象编程的三大特性1.封装2.继承3.多态三、接口和抽象类1.抽象类2.接口总结一、方法的重载和重写?方法的重载: 同一个类中,可以使用相同的方法名,但是方法的参数的个数,类型或者顺序不同,同一个方法可以根据输入数据的不同做出不同的处理。方法的重写: 子类继承父类的方法,可以对父类的方法进行重新编写,方法名、参数列表、和返回值类型都相同,内部逻辑可以改变。提示:构造方法不能被重写。方法的重写遵循 “两同两小一大” 的规则:两同:方法名

2021-05-09 09:40:23 217

原创 桶排序

桶排序算法的原理一、桶排序算法的原理桶排序的思想是先进行分区,然后将数组中的数按照对应的区间放,下面展示一些 基数排序代码片。//基数排序法package arraylist;import java.util.Arrays;public class CardinalSort { public static void main(String[] args) { int [] arr= {478,535,678,156}; sort(arr); } static vo

2021-03-07 21:43:39 110 1

原创 算法:动态规划

动态规划学习动态规划适合与解决最优问题,求最大值最小值等,可以显著降低时间复杂度。动态规划算法思想:一个模型: 多阶段决策最优解模型。三个特征:最优子结构:文图的最优解包含子问题的最优解;无后效性:推导后面阶段的状态时,只关心前面阶段的状态值,不关心状态时怎么来的,某阶段的状态决定之后不受之后阶段状态的影响。重复子问题:不同的决策序列,到达某个相同的阶段可能会产生重复的状态。解决动态规划问题的解题总结:状态转移表法: 将解决问题转化成状态表,分阶段填充状态表的每个状态。解题思路:回

2021-03-06 20:21:43 159

原创 Trie树

Trie树Trie树:Trie树:”字典树“。它是一个树形结构。它是一种专门处理字符串匹配的数据结构,用来解决在一组字符串集合中快速查找某个字符串的问题。Trie 树的本质,就是利用字符串之间的公共前缀,将重复的前缀合并在一起。Trie 树主要有两个操作:将字符串的几何构造成Trie树 ;在Trie树中查询一个字符串。代码实现的原理:将字符串的值通过一个下标和字符映射的数组来存储节点的指针。将a到z这26个字母从0-25进行存储,当查找的是时候用ASCII-'a’查找匹配的子节点的指针。

2021-03-06 13:59:58 99

原创 算法

**BF算法:**是 Brute Force 的缩写,中文叫作暴力匹配算法,也叫朴素匹配算法。思想为我们在主串中,检查起始位置分别是 0、1、2…n-m 且长度为 m 的 n-m+1 个子串,看有没有跟模式串匹配的。RK 算法: 全称叫 Rabin-Karp 算法,我们通过哈希算法对主串中的 n-m+1 个子串分别求哈希值,然后逐个与模式串的哈希值比较大小。如果某个子串的哈希值与模式串相等,那就说明对应的子串和模式串匹配了。所以RK算法相比于BF算法是一种改进版,它是将字串转换成数字进行遍历的。哈希

2021-03-05 22:38:49 160

原创 广度+深度优先算法(BFS+DFS)

广度优先搜索算法:(Breadth-First-Search)BFS,“地毯式”层层推进的搜索策略,即先查找离起始顶点最近的,然后是次近的,依次往外搜索。public void bfs(int s, int t) { if (s == t) return; boolean[] visited = new boolean[v];//记录被访问的顶点 visited[s]=true;//顶点 被访问,那相应的 visited[ ]设置为 true。 Queue<Integer&gt

2021-03-05 20:47:03 134

原创 数据结构:堆(Heap)+图(Graph)

/*数据结构与算法学习:堆 + 图*/堆: 一种特殊的树,必须满足的条件:堆是一个完全二叉树;堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值。大顶堆: 每个节点的值都大于等于子树中每个节点值的堆小顶堆: 对于每个节点的值都小于等于子树中每个节点值的堆。第 1 个和第 2 个是大顶堆,第 3 个是小顶堆,第 4 个不是堆。堆的应用:优先级队列;合并有序小文件;高性能定时器;利用堆求TOP K;利用堆求中位数。图: 非线性表数据结构,在有向图中,我们把

2021-03-05 10:52:09 582 1

原创 数据结构与算法:树(Tree)

树: 是n个节点的有限集,由一个根节点和若干个子树构成。和我们生活中的树结构相似,n>0时根节点是唯一的,不能存在多个根节点。其中子树没有限制可以有多个,但是子树一定不相交。二叉树: 是由一个根节点和两颗互不相交的分别称为根节点的左子树和右子树的二叉树组成。二叉树的每个节点最多有两个子节点,分别是左子节点和右子节点。二叉树中,有两种比较特殊的树,分别是满二叉树和完全二叉树。满二叉树又是完全二叉树的一种特殊情况。数组插入时左子节点要小于父节点,右子节点要大于父节点。完全二叉树: 即所有的编号都要连续

2021-03-04 16:05:29 2737 1

原创 跳表(Skip List)+散列表(Hash Table)+哈希算法

跳表: 支持二分查找的链表算法,这是一种链表加多索引的结构。在跳表中查询某个数据的时候,如果每一层都要遍历 m 个结点,那在跳表中查询一个数据的时间复杂度就是 O(m*logn)。跳表占用内存但是速度快。散列表: 平时叫他为“哈希表”或者“Hash 表”,散列表用的是数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。散列函数设计的基本要求:散列函数计算得到的散列值是一个非负整数;如果 key1 = key2,那 hash(key1) == hash(key

2021-03-03 15:06:02 645

原创 数据结构:栈(stack)+队列(Queue)+递归(recursion)

栈: 是一种先进后出,后进先出的结构,相当于一个盘子。当某个数据集合只涉及在一端插入和删除数据,并且满足后进先出、先进后出的特性,这时我们就应该首选“栈”这种数据结构。队列: 先进者先出,入队 enqueue(),放一个数据到队列尾部;出队 dequeue(),从队列头部取一个元素。递归: 简单点就是用前面的数推导后面的数,也就是调用自身,调用为递,返回为归,可表示为,f(n)=f(n-1)+1 其中,f(1)=1,。递归的三个条件:一个问题的解可以分解为几个子问题的解。这个问题的解和

2021-03-02 10:51:31 426

原创 数据结构学习:复杂度分析+数组+链表

数据结构与算法/复杂度分析时间复杂度: 时间复杂度的全称是渐进时间复杂度,表示算法的执行时间与数据规模之间的增长关系。空间复杂度: 空间复杂度全称就是渐进空间复杂度,表示算法的存储空间与数据规模之间的增长关系。最好、最坏和平均复杂度: 最好/最坏/平均情况时间复杂度就是,在最理想的情况下,执行这段代码的时间复杂度。数组: 用一块连续的内存空间,来存储相同类型的一组数据,最大的特点就是支持随机访问,但插入、删除操作也因此变得比较低效,平均情况时间复杂度为 O(n)。数组删除的快捷方法: 我们可以先记

2021-03-01 22:15:41 220

原创 计数排序算法

计数排序一、计数排序算法的原理计数排序是一种非比较排序的方法,适用于量大但是范围小的数组当中,其思想为记录一个数在数组中出现的个数,出现一次,就+1,如果没有出现就是0,最后最后直接遍历输出这个数组里面的每一个大于0的元素值即可。下面展示一些 计数排序代码片。//计数排序法package arraylist;import java.util.Arrays;public class CountSort { public static void main(String[] args)

2021-02-28 22:01:08 196

原创 归并排序+快速排序算法

归并排序Merge Sort一、归并排序算法的原理二、快速排序算法的原理一、归并排序算法的原理归并排序是java对象常用的排序方法,其思想使用递归的原理,首先将数组划分为几段已经排序好的子部分,然后两两进行比较,子部分的第一位与第一位比较,谁小将谁放入新数组的第一位,然后取小的子段的第二位与之前较大的第一位比较,以此类推,重复操作,如果最后某个子段较长剩下没有比较的数,则直接放入新的数组。下面展示一些 归并排序代码片。//归并排序法package arraylist;public class

2021-02-28 20:28:00 122

原创 希尔排序

希尔排序一、希尔排序算法的原理一、希尔排序算法的原理希尔排序称为改进的插入排序,首先取一个间隔,将间隔的数进行首次排序,间隔大时移动次数少,间隔小时移动的间距小,所以计算速度快,再将间隔缩小进行排序,这时候基本接近顺序排列了,最后普通插入排序即可。下面展示一些 希尔排序代码片。//希尔排序法package arraylist;public class ShellSort { public static void main(String[] args) { int[] arr= {6,5

2021-02-28 10:29:10 855 3

原创 选择、冒泡、插入排序法

选择、冒泡、插入排序法一、选择排序算法的原理二、冒泡排序算法的原理三、插入排序算法的原理四、简单总结选择、冒泡、插入排序算法算法原理及代码实现一、选择排序算法的原理选择排序简单的来说就是拿第一个数和剩下的数去比较,找出最小的数之后和第一个数交换,以此类推进行n-1次的比较得到一个新的排序方法。下面展示一些 内联代码片。//选择排序法package arraylist;public class SeletionSort { //首先定义一个整体的框架,能够打印出来数值 //2.找出最小的

2021-02-27 21:24:53 195 1

原创 编程真的香?

@转行编程的淘汰者为何都来学习编程,传统行业前景悲观?你好! 这是本人第一次在 博客发文章,知识学习一下Markdown。新的十字路口学习机械数七载奈何自身无成就机械行业不乐观面对就业压力大听说码农还不错为此跳槽学Java初入学者一头懵各界大佬来帮忙经验建议甩起来你一言他一句我在这里等你来插入一段漂亮的代码片代码片.public static void mian(String[] args){ System.out.println("感谢您来此一游");};

2021-01-12 11:51:00 327 7

空空如也

空空如也

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

TA关注的人

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