![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 67
星际迷航‖
每个学徒都有一颗成为大师的心
展开
-
递归实现迷宫、八皇后、汉罗塔 等问题
断了两天、所以还是开心学算法的第七天程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件.原创 2021-01-30 19:21:18 · 411 阅读 · 7 评论 -
逆波兰表达式、中缀转换为后缀表达式
开心学算法的第6天中缀表达式实现简易计算器接上篇中缀计算器的实现,这篇实现后缀表达式(逆波兰表达式)实现计算器,以及中缀表达式转换为后缀表达式。后缀表达式计算器的实现后缀表达式:3 4 + 5 * 6 -实现思路:只需要一个栈用来存储数值,在遍历的过程中遇到字符时就需要将数栈出栈两个元素并调用上一篇所实现的compute计算函数计算的值并将结果入栈,在遍历完成之后将结果入栈依次类推,最后栈中只剩余一个元素并且打印结果。 //后缀 //从左向右依次入栈只存在一个数栈,如果遇到运算.原创 2021-01-27 20:21:52 · 530 阅读 · 4 评论 -
使用中缀表达式实现一个简易计算机
开学学算法的第5天使用中缀表达式基于栈实现一个简易的中缀表达式。实现思路:先对其判断字符str.charAt(i)是数字还是运算符,如果是数字直接入数栈,如果是运算符先判断是否栈空,栈空则直接入栈,栈不为空则判断当前运算符优先级和栈顶运算符优先级比较,当前运算符优先小于等于栈顶运算符,出两个数字栈,一个字符栈并做运算,将运算结果入栈,并将当前运算符入栈。依次遍历完字符。最后判断字符栈是否为空,为空直接出数字栈为最终结果,不为空则出数字栈两个元素,出运算符栈一个元素并计算然后将结果入数字栈,直到运算.原创 2021-01-26 18:38:30 · 561 阅读 · 2 评论 -
环形单链表的增删改查、约瑟夫环两种解法
开心学算法的第四天环形单链表环形列表结构构造环形列表class singleLinked<E>{ //环形列表头节点 private Node<E> head; //环形列表元素个数 private int size; class Node<E>{ private E val; private Node<E> next; public Node(E val){.原创 2021-01-25 15:23:33 · 848 阅读 · 7 评论 -
自定义实现单链表增删改查、栈的入栈和出栈
开心学习算法数据结构的第三天内容单链表单链表的概念1.什么是单链表?单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以节点来表示的,每个节点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。存放的数据是不连续的。以下是链表的指向不连续。实际结构:2.单链表相对于数组有哪些优缺点?数组:优点:随机访问性强,查找速度快缺点:1、对内存的要求高,必须要.原创 2021-01-23 20:59:43 · 570 阅读 · 0 评论 -
什么是稀疏数组
比较项抽象类接口方法可以抽象非抽象方法所有的方法都是从抽象方法属性可以有非静态常量所有的属性都是静态常量构造方法有构造方法无构造方法继承一个类只能继承一个类一个类可以继承多个接口被继承一个类只能继承一个父类一个接口可以同时继承多个接口...原创 2021-01-22 12:45:56 · 625 阅读 · 0 评论 -
八种排序算法及部分算法的优化
排序算法排序算法在面试中可以说是必会问到的知识点,所以我们必须得掌握。排序冒泡排序思路:如上图片每一趟从一个元素开始两个相邻的元素依次作比较,如果当前元素大于下一个元素则交换元素依次类推即可。冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排原创 2021-01-21 20:18:36 · 358 阅读 · 0 评论 -
学不会的银行家算法
这是我们期末的课程设计,没有控制台输入资源,直接测试的程序,逻辑应该没什么问题什么是死锁? 死锁是指两个或者两个以上的进程(线程)在执行的过程中,由于竞争资源而造成的阻塞问题,若无外力的作用下会无法继续推进,此时系统称之为死锁状态。银行家算法:主要是避免死锁产生死锁的的必要条件:互斥条件:一个资源只能被一个进程占用,如果一个进程请求当前资源,资源被占用的时候,这.原创 2020-11-20 00:59:36 · 3864 阅读 · 22 评论 -
康拓排列以及全排列老年人听不懂系列
以下三个题都是LeetCode题库里面的。1.给定一个没有重复数字的序列,返回其所有可能的全排列。示列: 输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]整个的过程就如下图,我们可以利用循环让他从第一个元素开始排列,从根开始遍历依次记录节点的值记录在集合之中。可以根据图可得这是一个回溯算法...原创 2020-04-25 21:50:11 · 527 阅读 · 0 评论