![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
..
关于我是一个超级无敌拥有替身使者觉醒的人
这个作者很懒,什么都没留下…
展开
-
快速排序。
kkk原创 2022-06-14 15:27:57 · 118 阅读 · 0 评论 -
希尔排序。
希尔排序原创 2022-06-14 15:00:18 · 64 阅读 · 0 评论 -
插入排序、
2333原创 2022-06-05 17:22:16 · 52 阅读 · 0 评论 -
选择=====排序算法。
22333原创 2022-06-02 15:45:53 · 75 阅读 · 0 评论 -
稀疏数组。。
爱的速递原创 2022-06-02 14:48:43 · 61 阅读 · 0 评论 -
排序----冒泡
冒泡排序排完序后 ,数组从小到大一共需要数组下标-1趟次排序。(有五个数字进行排序,确定了4个数字的大小位置,第五个也就确定了)每一趟排序从,数组下标为0开始,相邻的两个数进行比较(arr【i】>arr[i+1]),如果逆序则进行交换位置,直到最大的那数在最右边‘’‘’‘’‘’‘’‘’一趟下来确定一个数的位置,就像冒泡一样一个一个冒出水面。因为一趟确定好一个数的位置,所以完后的比较次等于 数组的大小-1-趟数;public class Test { public static v原创 2022-05-24 14:56:17 · 51 阅读 · 0 评论 -
中缀表达式转逆波兰表达式
实现思路1.首先需要一个String s变量接受一个中缀字符串。然后通过一个方法将字符串转换成一个ArrayList al 集合方便遍历。原创 2022-05-22 18:01:58 · 183 阅读 · 0 评论 -
八皇后问题--回溯算法
思路1.八个皇后在8*8棋盘中不能互相攻击,即不能在同一行同一列和同一斜线上2. 使用暴力破解算法,进行穷举法,每摆放一个皇后判断,是否与之前摆放在皇后产生冲突(不能互相攻击)3. 若产生互相攻击则尝试,下一个一位置。若同行的位置的测试完不行则,进行回溯,到上一行,进行下一个位置的摆放。4. 当摆放到第八个皇后时,表示一种解法。思路21.用一个一维数组模拟8*8棋盘。数组的下标表示,行,值标时列。数组下标与要摆放的皇后相等2. 判断是否冲突方法。只需判断列和斜线上是否有皇后。行不需要判断,因原创 2022-05-20 16:10:56 · 177 阅读 · 1 评论 -
迷宫回溯算法
递归递归就是方法自己调用自己。递归调用必须有结束条件每一次调用要接近结束递归的条件,否则会栈溢出。递归不能太深否则也会栈溢出迷宫用二维数组数组模拟迷宫,数字1 表示墙,数字0表示没走过,数字2表示走过,数字3表示走不通。假设 从1,1 坐标开始走,走到 6,6 坐标表示走出迷宫class Maze(){//二维数组 模拟迷宫 int[][] array;//构造方法 传入迷宫数组的大小 public Maze(int [][] array){ this.arra原创 2022-05-16 15:37:39 · 70 阅读 · 0 评论 -
空间复杂度
空间复杂度是指算法运行整个过程中所占用的空间。空间可以重复利用,与空间复杂度进行比较语句执行从上往下逐行运行。int i=1;int j=2;int temp=i+j;创建了三个变量,一共占用34字节的内存。不论算的数字的大小时多少,占的空间懂为34 个字节。用户在进行使用程序时并不会考虑这个算法空间复杂度大不大(完成该临时占的空间),而对客户最明显的感受是这个应用程序运行的快不快。运行的效率。可以用空间换时间。...原创 2022-05-13 16:26:26 · 47 阅读 · 0 评论 -
时间频度和时间复杂度
时间频度/语句频度时间频度也叫语句频度。时间频度表示代码运行的次数,代码运行的次数与时间正正比小明去小红家,我们都知道两点直接线段最短。假设小明每走一步相当于,运行一次代码。则如果小明绕路走的话,走的步数越多,花的时间也越多。步数和所花的时间成正比。时间频度通常用 T(n)表示时间复杂度算法的时间复杂度(Time complexity)是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方原创 2022-05-13 16:11:04 · 970 阅读 · 0 评论 -
逆波兰计算器
编写思路逆波兰计算器,是指计算后缀表达式(逆波兰表达式),并不是直接计算中缀表达式无括号。计算值value过程。新建一个类,里面一个方法,参数数是ArrayList al,集合里存储的是后缀表达式,数字与符号分离。在方法里创建一个栈。对ArrayList集合进行遍历,是数字直接压栈,是符号进行相关运算,运算完节再压栈(注意除法和减,两个数运算顺序)最后在栈留下来的就是,计算结果创建一个Compute类、public class Compute{ //逆波兰计算器 ,计算结果方法原创 2022-05-05 20:33:22 · 93 阅读 · 0 评论 -
前缀、中缀、后缀表达式
前缀表达式前缀表达式也称为逆波兰表达式,运算符符在前面,操作数在后面。例如:3+4的前缀表达式 +3 4;前缀表达式值计算,对前缀表达式从右往左进行遍历。遇到符号为则进行相应的运算。运算时主要减法和除法的运算顺序。中缀表达式中缀表达式就是我们平时所用的表达式。例如3+4就是一个中缀表达式。运算符在两数中间后缀表达式后缀表达式也称为逆波兰表达式 ,后缀表达式是将运算符放在数字后面。值计算,从左往右遍历(符合我们平时中缀表达式的遍历),遇到符号取出两个数进行相应的计算。总结前,原创 2022-05-05 19:22:08 · 411 阅读 · 0 评论 -
用栈写一个计算器
计算器希望:用户直接输入一个中缀表达式(字符串)给计算机然后计算机计算出结果。思路创建两个栈一个存储数s1,另一个存储运算符号s2,对用户传入的字符串用index进行一个一个遍历。如果遍历的数,直接入数栈s1。因为对字符串遍历是一个一个进行的,当遍历多位数时不能直接入栈,要检验后一位是否为数字,直到后一位是符号才结束遍历如果遍历的是符号,若符号栈s2,为空直接入栈1.若是左括号“(”直接入栈2. 若是遇到右括号“)” ,则从数栈中弹出两个数,符号栈中弹出一个符号进行运算,运算的结果原创 2022-04-28 10:45:47 · 170 阅读 · 0 评论 -
如何合并两个有序链表
合并两个链表后依然有序比较两个链表的第一个节点。 比较小的节点作为合并后链表的新头节点//传入两个链表要合并的头节点,进行合并public Node heBing(Node n1,Node n2){ //判断节点是否合法,或不需要合并 if(n1==null||n2==null||n1.next==null||n2.next==null){ return null; }//比较头节点//默认n1.next节点小 Node temp.原创 2022-04-12 15:25:53 · 263 阅读 · 0 评论 -
单向链表如何实现逆序打印
单向链表遍历,只能从前往后进行遍历方法一:把链表的节点进行整体的反转,然后再遍历链表此方法改变了链表的本身结构public void printlnTest(Node head){//调用链表中反转节点方法 Node head= LinkedList.opposite(head); //遍历打印 Node temp=head.next;//判断是否为空节点 if(temp==null){ return; }.原创 2022-04-12 15:25:06 · 912 阅读 · 0 评论 -
如何实现单向链表的反转
链表的反转,把链表的各个节点进行相反的排序;原本的链表的第一个节点变成最后一个思路:创建一个新的头节点,然后遍历原来链表,在新的链表进行节点的排序。排序完成返回新的头节点。传入要反转的头节点public Node opposite(Node head){//新头节点 Node newHead= new Node(" ",0);//遍历head所在的链表 Node temp=head.next;//判断是否为空链表 ,空链表返回null if.原创 2022-04-12 15:21:45 · 151 阅读 · 0 评论 -
数据结构------队列
队列的基本概念:先进先出( 按放入是顺序,来决定谁先出; )列如平时的核酸检测排队和小卖部付款排队,先到先做核酸,先来先付钱如何用数组模拟队列我们需要4个变量:int【】arr //存储元素的位置int front;定义:指向首元素,的前一个位置 默认为-1 (数组的开头arr【0】是0,前一个则为-1);int rear;定义:指向数组的最后一个元素 默认为-1(数组为空时arr【0】数组这个位置未存储数据,因而不能指向默认不能指向0,定义是指向最后一个元素)int maxSi原创 2022-03-31 17:06:37 · 310 阅读 · 1 评论 -
数组模拟环形队列
队列和环形队列的相关概念队列是数据结构的一种类型,主要特点:先进先出先进先出:好比如排队买奶茶先来得人肯定比后来的早点买到奶茶2.环形队列是特殊队列的一种,特点能重复使用,像环形一样;普通队列取数据是前面的空间闲置不能利用,环形队列很好的解决这个问题###创建环形队列类public class ArrayQueue{ //size表示 队列的大小 int size; //front 表示指向环形队列**首元素元素** int front; //rear 表示指向原创 2022-04-12 15:15:23 · 102 阅读 · 0 评论 -
单向链表的实现(带头节点)
###单向链表基本概念逻辑结构:线性结构存储结构(内存的存储的方式):链式存储与数组比较,逻辑结构相同都是线性结构不同:数组的存储结构是顺序存储单向链表的组成单向链表由节点组成(Node)2.每个节点里有存储的数据,和下一个节点的位置###创建节点(包含数据和下一个节点的地址)public class Node(){ //学生名字 String name; //学号 int id; //下一个节点的地址 Node next;原创 2022-04-12 15:17:00 · 284 阅读 · 0 评论 -
双向链表的实现
双向链表与单向链表双向链表能往前查找,单向链表只能往后查找双向链表删除节点时,可以直接到要删除的节点进行操作而单向链表因为不能往前查找前一个节点。所以只能在要删除的节点的前一个节点进行操作双向链表比单向链表多了一个pre指针指向前一个节点逻辑结构都是线性结构,存储接口都是链式存储创建节点的类public class Node2(){ //data存储的数据 int id;//id号 String naem;//名字 String n原创 2022-04-15 09:26:25 · 68 阅读 · 0 评论 -
单向链表相关问题
###求单向链表的有效节点个数单向链表的链表尾最后一个节点指向下一个节点的地址为nullpublic int void number(Node head){//判断是否为空链表 if(head.next==nulll){ return 0; }//计数器 int i=0;//遍历链表 Node temp=head.next; while(temp!=null){ i++//原创 2022-04-12 15:17:48 · 55 阅读 · 0 评论 -
环形链表和约瑟夫问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、约瑟夫问题是什么二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。`一、约瑟夫问题是什么示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as .原创 2022-04-19 10:11:44 · 111 阅读 · 1 评论