随笔分类 - Java数据结构和算法
摘要:算法步骤 将待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。 代码 import java.util.Array
阅读全文
摘要:算法步骤 遍历整个数组,找到最小(大)的元素,放到数组的起始位置。 再遍历剩下的数组,找到剩下元素中的最小(大)元素,放到数组的第二个位置。 重复以上步骤,直到排序完成。 一共需要遍历数组元素个数-1次,当找到第二大(小)的元素时,可以停止。这时最后一个元素必是最大(小)元素。 代码 import
阅读全文
摘要:算法步骤 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 一共进行了数组元素
阅读全文
摘要:1、常见的排序算法 2、算法的时间复杂度 时间频度和时间复杂度 时间频度T(n) 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执
阅读全文
摘要:八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在 8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法(92)。 思路 将第一个皇后放在第一行第一列 将第二个皇后放在
阅读全文
摘要:1、概念 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。并且递归用到了虚拟机栈 2、能解决的问题 数学问题 八皇后问题 汉诺塔 求阶乘 迷宫问题 球和篮子 各种排序算法 3、规则 方法的变量是独立的,不会相互影响的 如果方法中使用的是引用
阅读全文
摘要:后缀表达式(逆波兰表达式)运算方法 从左向右读取表达式 遇到数字就压入栈中 遇到运算符就弹出栈顶和次顶元素。用次顶元素 运算符 栈顶元素,并将运算结果压入栈中,直到栈为空,最终结果就是运算结果 设计 中缀表达式转后缀表达式 从左向右读取中缀表达式,并且创建栈s1和队列s2 (因为s2只存不取且还要考
阅读全文
摘要:1、定义 栈是一个先入后出的有序列表 栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶,另一端为固定的一端,称为栈底 最先放入的元素在栈底,且最后出栈。最后放入的元素在栈顶,且最先出栈 2、应用场景 子程序递归调用。
阅读全文
摘要:循环链表 单链表的尾节点指向首节点,即可构成循环链表 约瑟夫环 约瑟夫问题:有 N 个人围成一圈,每个人都有一个编号,编号由入圈的顺序决定,第一个入圈的人编号为 1,最后一个为 N,从第 K (1<=K<=N)个人开始报数,数到 M (1<=M<=N)的人将出圈,然后下一个人继续从 1 开始报数,直
阅读全文
摘要:双向链表 实现思路 遍历 和单向链表的遍历相同,需要一个辅助节点来保存当前正在遍历的节点 添加 双向链表多出了一个front,所以在添加时,要让新增节点的front指向链表尾节点 修改 和单向链表的修改相同 删除 使用temp来保存要删除的节点 temp.front.next指向temp.next
阅读全文
摘要:链表的介绍 链表在内存中的存储 特点 链表是以节点的方式来存储,是链式存储 每个节点包含 data 域 和 next 域。next域用来指向下一个节点 链表的各个节点不一定是连续存储的 链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定 带头结点的逻辑示意图 实现思路 创建(添加) 先创建
阅读全文
摘要:定义 队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出 模拟思路 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量 因为队列的输出、输入是分别从前后端来处理,因
阅读全文
摘要:基本功能 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 处理方法 记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 如图,把一个6X7的二维数组变为了一个9X3的稀疏数组。其中 第一行保存的是原二
阅读全文