算法
文章平均质量分 66
-irony-
keeping coding
展开
-
Java字符串匹配算法
定义 串(string)是由零个或多个字符组成的有限序列又名叫字符串。 一般地,由n个字符串构成的串记作: S=“a0a1…an-1”(n≥0),其中a_i(1≤i≤n) n是个有限的数值 串一般记为S是串的名称,用引号括起来的字符序列是串的值 可以是字母,数字或其他字符,i就是该字符在串中的位置,串中的字符数目n称为串的长度 子串 在对字符串S做处理时,经常需要取出其中某一连续的片段,称为S的子串(substring) 具体地,由串S中起始于位置i的连续k个字符组成的子串记作substr(S,原创 2021-11-07 15:21:38 · 7948 阅读 · 0 评论 -
java-图论
图的概念 图的定义 由顶点和边组成的一种结构,顶点的集合V,边的集合E,所以图记为G=(V,E) 无向图 顶点之间的边没有方向则这个边叫作无向边,用无序偶(vi,v2)表示对如果图中任意两个顶点之间都是无向边那么这个图就是无向图,无向图中两个顶点之间都存在边,则图称为无向完全图 有向图 顶点之间的边有方向这条边就叫有向边也称为弧用<v1,v2>表示v1称为弧尾(Tail),v2称为弧头(Head),如果任意顶点之间的边都是有向边,则该图称为有向图 图的权 有些图的边或弧具有与他相关的数字,原创 2021-10-09 11:22:17 · 650 阅读 · 1 评论 -
树-java实现
树的概念 在客观世界中许多事物存层次关系,例如: 使用树这种结构的原因是因为层次管理具有更高的效率 树: N个节点构成的有限集合,含有一个称为根(Root)的特殊结点如上图的中国,其余的结点可分为若干个互不相交的树,称为原来结点的子树 基本术语 结点的度: 结点子树个数 树的度: 树中所有的节点中最大的度 叶结点: 度为0的结点 父结点: 有子树的结点是其子树的根节点的父结点 子结点: 若A是B的父结点,B就是A的子结点 注: 子树是不相交的除根结点外,每个结点有且只有一个父结点,一个N结点的原创 2021-10-03 09:46:48 · 914 阅读 · 1 评论 -
数组的删除和插入
数组的插入 尾部插入 直接一步完成 // 末尾插入 public void add(String task){ this.array[this.size] = task; this.size++; } 中间插入 插入的地方后面部分要向右移动一个单位 // 添加元素在中间 public void add(int index, int element) { //如果插入的索引值<0,或者>数组长度,结束程序 if (index < 0 || i原创 2021-07-25 15:26:29 · 669 阅读 · 0 评论 -
二分查找法
有序数组查找 在某个有序数组中查找某个数字是否存在 首先看暴力解法(图片为使用语雀画出) public static int find(int[] array, int aim) { for (int i = 0; i < array.length; i++) { if (aim == array[i]) { return i; } } return -1; } 二分查找 public static int原创 2021-07-25 14:53:11 · 74 阅读 · 0 评论 -
冒泡排序,选择排序,插入排序,快速排序,堆排序,归并排序等排序的java实现
冒泡排序 每次循环让最大的元素冒泡到最后面 核心规则有四点: 指向数组相邻两个元素,比较他们的大小 前者比后者大则交换他们的位置 后者大,则不交换 依次后移每次循环将最大的元素向后移动 如图依次类推,直到最大的元素到最后一位,开始第二次遍历 // 冒泡排序 public static void Sort(int[] array) { // 1. 每次循环,都能冒泡出剩余元素中最大的元素,因此需要循环 array.length 次 for (int i = 0; i < arr原创 2021-07-26 10:12:41 · 394 阅读 · 1 评论