摘要:
左旋转思想:当右子树的高度比左子树的高度高时(并且高度差绝对值超过了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.根据栈的定义可知,最先放入栈的元素在 阅读全文