
数据结构与算法
啦啦啦
伟大的兔兔
不拘于世间天地山川~
展开
-
07哈希表
哈希表(hash table) 又称为散列表,通过关键码值,直接访问数据。 数组 + 链表实现哈希表: package msp.cai.hashtable; /* * 数组 + 链表 实现哈希表 --> 存储用户信息 */ public class HashTableDemo { public static void main(String[] args) { UserHashTable userHash = new UserHashTable(5);原创 2021-07-26 09:44:00 · 199 阅读 · 0 评论 -
06查找算法
查找算法 1、顺序(线性)查找 package msp.cai.search; /* * 线性查找 */ public class LinearSearchDemo { public static void main(String[] args) { int[] arr = {1, 100, -2, 200, 8, 9, 16}; int index = linearSearch(arr, 8); if (index == 0)原创 2021-07-26 09:42:02 · 173 阅读 · 0 评论 -
05排序算法
常用排序算法 1、冒泡排序 时间复杂度:O(n^2) 思路:双层循环 比较相邻两个数的大小,把小的放到左边 每次循环,都会产生一个最大或最小的数 下一次循环可少排序一次 // 冒泡排序 public static void sort1(int[] arr){ for (int i = 0; i < arr.length-1; i++) { for (int j = 0; j < arr.length-1-i; j++) {原创 2021-07-26 09:40:00 · 137 阅读 · 0 评论 -
04递归 recursion
递归 递归就是方法自己调用自己,每次调用传入的参数不同。 递归方法必须向退出递归的条件逼近,否则就死循环了。 1、迷宫回溯问题 思路: 二维数组map表示迷宫8 * 7 开始位置(1, 1),目标位置(6, 5) 当map[i][j]为: 0 表示没走过 1 表示墙,走不了 2 表示可以走通 3 表示已经走过,但是走不通 在走迷宫时,确定一个策略: 下 -> 右 -> 上 -> 左 若当前位置走不通,回溯 package msp.cai.recursion; /原创 2021-07-26 09:38:22 · 153 阅读 · 0 评论 -
03栈 stack
栈 stack 一个先入后出的有序列表。 数组实现栈: package msp.cai.stack; /* * 数组实现栈 */ public class ArrayStackDemo { public static void main(String[] args) { ArrayStack stack = new ArrayStack(5); System.out.println("== 入栈 =="); stack.push(1);原创 2021-07-26 09:35:40 · 204 阅读 · 0 评论 -
02链表~
链表 Linked List 链表是有序的列表。 1、单向链表 实际结构: 逻辑结构: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nRMqG0ed-1627263118581)(C:\Users\松鼠打不赢仓鼠\AppData\Roaming\Typora\typora-user-images\image-20210715104550445.png)] package msp.cai.linkedlist; /* * 单向链表 * 使用链表存储数据 */ p原创 2021-07-26 09:33:28 · 166 阅读 · 0 评论 -
01稀疏数组与队列
稀疏数组和队列 1、稀疏数组 sparsearray 当一个数组大部分元素为0,或者为同一个值时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法: 记录数组有几行几列,有多少个不同的值 把具有不同值元素的行、列、值记录在一个小规模数组中,从而缩小程序规模 二维数组 -> 稀疏数组: 遍历二维数组,得到有效数据个数sum 创建稀疏数组sparaseArr int[sum+1][3] 将有效数据存入稀疏数组 稀疏数组 -> 二维数组: 读取稀疏数组的第一行,创建二维数组 读取稀疏数组原创 2021-07-26 09:29:38 · 178 阅读 · 0 评论