尚硅谷Java数据结构与java算法 全194章笔记整理
前言
视频地址:https://www.bilibili.com/video/BV1E4411H73v?from=search&seid=13120683720695451628
评价:整个教程的数据结构部分讲的挺好的,知识点全都覆盖了,而且每个数据结构都有代码解释,但是最后20节算法部分讲的有点乱,算法部分我决定直接刷leetcode了
数组
稀疏数组:
二维数组的省内存的保存方法,一般是n行3列,三列分别为行,列,值。
二维数组转稀疏数组:
- 遍历整个二维数组,查看有多少个有效数字
- 根据有效数字的个数,创建稀疏数组
- 遍历二维数组,将有效的数字放入稀疏数组中
稀疏数组转二维数组:
根据稀疏数组第一行建立空二维数组
读取稀疏数组后几行数据,插入二维数组中
代码实现:
package com.dataStructure;
public class sparseArray {public static void main(String[] args){//新建数组int Arr [][] = new int[11][11];Arr[1][2] = 1;Arr[2][3] = 2;Arr[3][4] = 3;//输出初始数组for(int[] row : Arr){for(int data : row){System.out.printf("%d\t",data);}System.out.print("\n");}//将二维数组转换为稀疏数组//1 遍历,得到非0个数int sum = 0;for (int i = 0; i < 11; i++){for (int j = 0; j < 11; j++){if (Arr[i][j] != 0){sum++;}}}//2 创建稀疏数组int[][] sparsArr = new int[sum+1][3];//第一行sparsArr[0][0] = 11;sparsArr[0][1] = 11;sparsArr[0][2] = sum;//输入值int count = 1; //用于记录sparseArr的行for (int i = 0; i < 11; i++){for (int j = 0; j < 11; j++){if (Arr[i][j] != 0){sparsArr[count][0] = i;sparsArr[count][1] = j;sparsArr[count][2] = Arr[i][j];count++;}}}//3 输出稀疏数组System.out.println();System.out.println("得到的稀疏数组为~~~");for(int i = 0 ;i< sparsArr.length ;i++){System.out.printf("%d\t%d\t%d\t\n",sparsArr[i][0],sparsArr[i][1],sparsArr[i][2]);}//将二维数组转换回稀疏数组//1 新建数组int[][] Arr_back = new int[sparsArr[0][0]][sparsArr[0][1]];//2 将有值的位置安回原来的位置for (int i = 1; i<sparsArr.length;i++){Arr_back[sparsArr[i][0]][sparsArr[i][1]] = sparsArr[i][2];}//输出数组System.out.println();System.out.print("Arr_back输出为~~~\n");for(int i = 0;i<sparsArr[0][0];i++){for(int j = 0;j<sparsArr[0][1];j++){System.out.print(Arr_back[i][j]+" ");}System.out.println();}}
}
队列
队列是一个有序列表,可能用数组或链表来实现。
先进入的数据先取出,后进入的数组后取出。
数组模拟队列的思路:
队列本身就是一个有序列表,maxSize来记录该数组最大容量;front和rear分别记录队列前后端的下标,front随着数据输出而改变,rear随着数据输入而改变。
加入数据:若队列不为满,尾部指针后移:rear+1
拿出数据:若队列不为空,前端指针后移:front+1
代码:
package com.dataStructure;
import java.util.Scanner;public class arrayQueue {public static void main(String[] args) {Queue arrayQueue = new Queue(3);String key = "";Scanner scanner = new Scanner(System.in);boolean loop = true;while (loop) {//输出一个菜单System.out.println("press s to show Queue");System.out.println("press e to exit program");System.out.println("press a to add element");System.out.println("press g to get data");key = scanner.next();switch (key) {case "s":arrayQueue.showQueue();break;case "e":scanner.close();loop = false;break;case"a":System.out.println("Input a word:");int value = scanner.nextInt();arrayQueue.addQueue(value);break;case"g":System.out.println(arrayQueue.getQueue());break;}}}
}class Queue {//装入
尚硅谷Java数据结构与java算法 全194章笔记整理相关推荐
- 尚硅谷Java数据结构和java算法,韩顺平数据结构和算法课后作业01
尚硅谷Java数据结构和java算法,韩顺平数据结构和算法课后作业第一题 要求: 1)在前面的基础上,将稀疏数组保存到磁盘上,比如map.data 2) 恢复原来的数组时,读取map.data进行恢复 ...
- 尚硅谷Vue3(天禹老师主讲)的笔记
这是尚硅谷Vue3(天禹老师主讲)的笔记,放在这里只是为了方便自己查看 文章目录 Vue3快速上手 1.Vue3简介 2.Vue3带来了什么 1.性能的提升 2.源码的升级 3.拥抱TypeScrip ...
- 算法图解第二章笔记与习题(选择排序)
算法图解第二章笔记与习题(选择排序) 文章目录 算法图解第二章笔记与习题(选择排序) 2.2 数组和链表 2.2.1 链表 2.2.2 数组 2.2.3 数组和链表的读取.插入和删除操作的时间复杂度 ...
- (尚硅谷项目代码)java基础----家庭记事本
小记:跟着尚硅谷的老师学了三天的java基础,学习完家庭记事本之后自己动手打了一遍代码,其中Utility是一些用到的方法,已经事先给出,放在Utility.java文件中,只需要在FamilyAcc ...
- 尚硅谷01 数据结构与算法_数据结构与算法介绍+稀疏数组
数据结构与算法的关系 几个实际编程中遇到的问题 要想写出优秀的算法,首先应该能读懂别人写好的算法. 将生活中遇到的实际问题,使用程序来解决 线性结构和非线性结构 线性结构和非线性结构的关系: 数据结构 ...
- 02尚硅谷宋红康Java视频笔记之语言概述
Java基础是学习JavaEE.大数据.Android开发 的基石! I Java基础知识图解 Java基础课程体系 1.1 软件开发介绍 软件开发 软件,即一系列按照特定顺序组织的计算机数据和指令的 ...
- 《尚硅谷30天入门Java》学习笔记1
第0天–准备工作 1.工具之印象笔记 浏览器插件.Android.Windows客户端.chrome印象笔记插件可以实现减藏页面,做笔记! 一个浏览器插件的网站 之前拖插件到拓展程序这里,显示crx_ ...
- 尚硅谷-宋红康-JVM上中下篇完整笔记-JVM上篇_内存与垃圾回收篇
前言 一.jvm及java体系结构 1. Java及JVM简介 TIOBE语言热度排行榜 https://www.tiobe.com/tiobe-index/ 世界上没有最好的编程语言,只有最适用于具 ...
- 尚硅谷-宋红康-JVM上中下篇完整笔记-JVM中篇
一.Class文件结构 1.概述 1.1 字节码文件的跨平台性 所有的JVM全部遵守Java虚拟机规范:Java SE Specifications,也就是说所有的JV环境都是一样的,这样一来字节码文 ...
最新文章
- javascript 中的eval方法 小窍门
- Atitit. 脚本语言的断点单步调试的设计与实现 attialx 总结 php 参照java
- ajax和promise的结合使用
- IDA无法反编译 and 提示错误
- Linux C编程之四 动态库(共享库)的制作
- linux压缩与解压缩 tar命令
- 计算机应用综合实践实验心得,综合实践活动培训心得体会范文(精选5篇)
- SEO网站优化团队官网模板
- kafka可视化客户端工具(Kafka Tool)的使用
- 视频(avi)转换为图片(Python代码实现)
- C语言ascll码表值和字符的互相转换的程序
- PMP 第10章 项目沟通管理
- Linux串口属性设置
- 物理内存是什么是计算机的显卡内存吗,物理内存和虚拟内存是什么意思怎么理解...
- 实训项目名称: 双绞线的制作
- 服务器防火墙部分指令
- 微信小程序连接WiFi
- 与小卡特一起学python 豆瓣_《父与子的编程之旅:与小卡特一起学Python》
- 薄如便签纸的概念闪存U盘:贴在电脑上就能用
- 二、LoRaWAN Gateway【LoRaWAN实战项目】
热门文章