![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
数据结构学习和练习
彬彬小码农
这个作者很懒,什么都没留下…
展开
-
Java排序算法-桶排序
其中比较的最大位数,即为数组中元素的最大位数(且不能为比较负数,如果比较负数需要在比较之前变成绝对值,在加负号)分别从个、十、百...开始排序,第一次比较个位上的大小,第二次比较十位,以此类推。2.在创建一维数组存放每个桶存放元素的数量。1.先创建二维数组存放10个桶。3.遍历每个桶顺序取出元素。...原创 2022-07-29 14:37:14 · 666 阅读 · 0 评论 -
递归机制-迷宫问题
思路:1.先设置好地图,开辟二维数组,讲边界值设置为1,走过的路设置为2;2.调用forward方法进行递归,最开始传入map[1][1],这点的值为0,所以进入下一层if判断,在if判断中进行调用,在到达终点后进行回溯package recursion;import java.util.Arrays;public class LabyrinthDemo { //定义地图 int[][] map = new int[8][7]; //加上边界 1-边界 2-走过的路原创 2022-05-03 19:46:19 · 82 阅读 · 0 评论 -
八皇后问题(思路分析和代码)
思路:1.摆放第一个皇后,从第1列摆到第8列,在其中某一列符合时,摆放第二个皇后。2.继续从第1列到第8列摆放皇后,其中有满足的继续摆放下一个皇后。3.当摆放到第8个皇后后,会进行判断是否已经摆满8个,若摆满则进行回溯。代码:package recursion;import java.util.Arrays;public class Queen { int max = 8;//定义数组的最大长度 int[] arr = new int[max];//声明数组原创 2022-05-03 18:28:23 · 823 阅读 · 0 评论 -
数据结构-栈实现(链表)
底层用链表实现1.push:插入函数(采用头插法-head为栈顶) public void push(int data){//头插法插入元素 if(size == 0){//判断是否为空 head = new Node(data); } Node node = new Node(data);//存储节点数据 node.next = head;//将新节点和之前的节点连接原创 2022-05-03 15:37:29 · 617 阅读 · 0 评论 -
数据结构-栈实现(动态数组)
动态数组和普通数组的区别是:普通数组定义好长度后不可改变,而动态数组会在数组满时修改数组的最大长度。package stack;import java.util.Scanner;public class StackDemo1 { private int[] stack;//用数组模拟栈 private int maxSize;//定义栈的大小 private int top=-1;//定义栈顶 //构造器 StackDemo1(){ }..原创 2022-05-03 13:23:23 · 537 阅读 · 0 评论 -
数据结构-栈实现(数组)
栈的特点:栈只能从表的一端存取数据,另一端是封闭的,如图 1 所示; 在栈中,无论是存数据还是取数据,都必须遵循"先进后出"的原则,即最先进栈的元素最后出栈。拿图 1 的栈来说,从图中数据的存储状态可判断出,元素 1 是最先进的栈。因此,当需要从栈中取出元素 1 时,根据"先进后出"的原则,需提前将元素 3 和元素 2 从栈中取出,然后才能成功取出元素 1。 下面的代码是用数组实现的package stack;import java.util.Scanner;public class原创 2022-05-03 12:19:14 · 441 阅读 · 0 评论 -
heap 和stack 有什么区别?
简单的可以理解为:heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是...转载 2022-04-08 16:26:49 · 5125 阅读 · 0 评论 -
Java数据结构-单向链表实现
链表是有序的,这是内存空间示意图链表是以节点的方式来存储 每个节点包含data域,next域:指向下一个结点 链表的各个元素不一定是连续存储的 链表分为有头节点和没有头节点的链表 链表循环时:temp = temp.next; 删除和插入元素时:都要找到待插入位置的前一个元素package LinkedList;public class SingleLinkedList { public static void main(String[] args) {原创 2022-04-05 18:52:04 · 593 阅读 · 0 评论 -
Java数据结构-环形队列实现
环形队列的介绍:队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即:先存入队列的数据,要先取出,后存入的要后取出。模拟步骤:声明数组,且最大容量为maxSize。 因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front 及 rear 分别记录队列前后端的下标, front 会随着数据输出而改变,而 rear 则是随着数据输入而改变。 front指向队列的第一个元素,初始值为0。 rear指向队列的最后一个元素的后一个位置,初始值为0。注意:1.队列原创 2022-03-26 19:58:42 · 1230 阅读 · 0 评论