随笔分类 - 数据结构与算法
摘要:1.二分查找算法(非递归) /** * 二分查找算法:非递归 */ public class BinarySearchNoRecur { public static void main(String[] args) { int arr[] = {1, 3, 8, 10, 11, 67, 100}; 
        阅读全文
                
摘要:构造上图的图 public class Graph { //定点集合 private List<String> vertexList; //存储图对应的临结矩阵 private int[][] edges; //表示边的数目 private int numOfEdges; public static
        阅读全文
                
摘要:二叉树的问题: 2-3树的基本介绍 2-3树是最简单的B树结构,具有以下的特点 1. 2-3树的所有叶子节点都在同一层(只要是B树都满足这个条件) 2. 有两个子节点的节点叫做二节点,二节点要么没有子节点。要么有两个子节点。 3.有三个节点的节点叫做三节点,三节点要么没有子节点,要么有三个子节点。 
        阅读全文
                
摘要:左旋转思想:当右子树的高度比左子树的高度高时(并且高度差绝对值超过了1时) 代码示例: package cn.com.avlTree; /** * 平衡二叉树 */ public class AvlTreeDemo { public static void main(String[] args) {
        阅读全文
                
摘要:引入需求: 给定一个数列{7,3,10,12,5,1,9}要求能够高效的完成对数据的查询和添加 package cn.com.binarySortTree; import java.util.Arrays; /** * 二叉排序树 * 对于任何一个非叶子节点,要求左节点的值比当前节点的值小,右子节点
        阅读全文
                
摘要:二叉树 1.概念 1.数有很多种,每个节点最多只能有两个子节点的一种形式称为二叉树。 2.二叉树的子节点分为左节点和右节点。 3.如果该二叉树的所有叶子节点都在最后一层,并且总节点数为=2ⁿ-1,n为层数,则我们称为满二叉树 4.如果该二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶
        阅读全文
                
摘要:代码示例: 有三部分: 1.员工实体Emp,里面有个重要的next属性,标注下一个员工 2.员工链表EmpLinkedList,里面包含了head头部信息,以及链表的增删改查 3.链表数组MyHashTable,暴露给上层调用的,里面会根据id定位到具体操作的链表,再进行基本操作 /** * 模拟h
        阅读全文
                
摘要:在java中,我们常用四种查找算法: 1.顺序查找(线性) 2.二分法/折半查找 3.插值查找 4.斐波那契查找 1.线性查找. 2.二分查找算法 二分查找: 对一个 进行二分查找{1,8,10,89,1000,1234},输入一个数,看看该数组是否存在此数,并且求出下标,如果没有就提示"没有这个数
        阅读全文
                
摘要:1.冒泡排序 基本介绍: 冒泡排序的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),一次比较相邻元素的值,如果发现逆序,使较大的元素逐渐从前向后移动。 因为在排序的过程中,各元素不断的接近自己的位置,如果一趟比较下来没有进行任何交换,就说明序列有序。因此要在排序过程中设置一个标志fla
        阅读全文
                
摘要:排序分类 1.内部排序 只将需要处理的所有数据都加载到内存寄存器中(内存)进行排序。 2.外部排序 数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。 算法的时间复杂度 度量一个程序(算法)的执行时间的两种方式。 1.事后统计的方式 这种方法可行,但是有两个问题:一是要对设计的算
        阅读全文
                
摘要:八皇后问题算法解题思路 1.第一个皇后先放到第一行第一列。 2.第二个皇后放在第二行第一列,然后判断是否ok。,如果不ok,继续放在第二列、第三列,依次把所有列都放完,找到一个合适的。 3.继续放第三个皇后,还是第一列、第二列....直到第八个皇后也能放在一个不冲突的位置上。算是找到一个正确解。 4
        阅读全文
                
摘要:简单的说:递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 一归需要遵守的重要原则 1.执行一个方法时,就创建一个新的受保护的独立空间(栈帧) 2.方法的局部变量是独立的,不会相互影响。 3.如果芳芳使用的是引用类型变量(如数组),就会共享
        阅读全文
                
摘要:问题引出: 1.栈的英文是stack 2.栈是一个先入后出的有序列表 3.栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。 允许插入和删除的一端,会变化的一端,称之为站栈顶(Top) 另外一端为固定的一端,称之为栈底(Bottom) 4.根据栈的定义可知,最先放入栈的元素在
        阅读全文
                
摘要:问题引出: 单行环形链表 代码实现: 1.定义一个Childtren实体 class Children { //编号 private int no; //下一个 private Children next; //对应的get/set方法,和no的构造器 } 2.单项唤醒链表管理类 class Cir
        阅读全文
                
摘要:使用带head头的双向链表实现-水浒英雄排行榜管理的优缺点分析 1.单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找 2.单向项链表不能自我删除,需要靠辅助节点,啊,双向链表可以自我删除,所以前面我们单链表删除时,总是找到temp(待删除节点的前一个节点) 新增: /** * 1.
        阅读全文
                
摘要:1.链表介绍 链表是有序的列表,但是他在内存中的存储如下: 。 小结: 链表是以节点的方式存储 每个节点包含data域和next域(指向下一个节点) 如图:发现每个节点并不是一定连续的 链表分带头节点的链表和没有头节点的链表,根据实际情况而定 场景:创建一个链表 链表新增: package cn.c
        阅读全文
                
摘要:线性结构和非线性结构 数据结构包括:线性结构和非线性结构 线性结构 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系(如数组:a[0]只有一个元素) 线性结构有两种不同的存储结构,即顺序存储结构(数组)和链式存储结构(链表)。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续
        阅读全文
                
                    
                
浙公网安备 33010602011771号