前言

视频地址:https://www.bilibili.com/video/BV1E4411H73v?from=search&seid=13120683720695451628

评价:整个教程的数据结构部分讲的挺好的,知识点全都覆盖了,而且每个数据结构都有代码解释,但是最后20节算法部分讲的有点乱,算法部分我决定直接刷leetcode了

数组

稀疏数组:

二维数组的省内存的保存方法,一般是n行3列,三列分别为行,列,值。

二维数组转稀疏数组:

  1. 遍历整个二维数组,查看有多少个有效数字
  2. 根据有效数字的个数,创建稀疏数组
  3. 遍历二维数组,将有效的数字放入稀疏数组中

稀疏数组转二维数组:

  1. 根据稀疏数组第一行建立空二维数组

  2. 读取稀疏数组后几行数据,插入二维数组中

代码实现:

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章笔记整理相关推荐

  1. 尚硅谷Java数据结构和java算法,韩顺平数据结构和算法课后作业01

    尚硅谷Java数据结构和java算法,韩顺平数据结构和算法课后作业第一题 要求: 1)在前面的基础上,将稀疏数组保存到磁盘上,比如map.data 2) 恢复原来的数组时,读取map.data进行恢复 ...

  2. 尚硅谷Vue3(天禹老师主讲)的笔记

    这是尚硅谷Vue3(天禹老师主讲)的笔记,放在这里只是为了方便自己查看 文章目录 Vue3快速上手 1.Vue3简介 2.Vue3带来了什么 1.性能的提升 2.源码的升级 3.拥抱TypeScrip ...

  3. 算法图解第二章笔记与习题(选择排序)

    算法图解第二章笔记与习题(选择排序) 文章目录 算法图解第二章笔记与习题(选择排序) 2.2 数组和链表 2.2.1 链表 2.2.2 数组 2.2.3 数组和链表的读取.插入和删除操作的时间复杂度 ...

  4. (尚硅谷项目代码)java基础----家庭记事本

    小记:跟着尚硅谷的老师学了三天的java基础,学习完家庭记事本之后自己动手打了一遍代码,其中Utility是一些用到的方法,已经事先给出,放在Utility.java文件中,只需要在FamilyAcc ...

  5. 尚硅谷01 数据结构与算法_数据结构与算法介绍+稀疏数组

    数据结构与算法的关系 几个实际编程中遇到的问题 要想写出优秀的算法,首先应该能读懂别人写好的算法. 将生活中遇到的实际问题,使用程序来解决 线性结构和非线性结构 线性结构和非线性结构的关系: 数据结构 ...

  6. 02尚硅谷宋红康Java视频笔记之语言概述

    Java基础是学习JavaEE.大数据.Android开发 的基石! I Java基础知识图解 Java基础课程体系 1.1 软件开发介绍 软件开发 软件,即一系列按照特定顺序组织的计算机数据和指令的 ...

  7. 《尚硅谷30天入门Java》学习笔记1

    第0天–准备工作 1.工具之印象笔记 浏览器插件.Android.Windows客户端.chrome印象笔记插件可以实现减藏页面,做笔记! 一个浏览器插件的网站 之前拖插件到拓展程序这里,显示crx_ ...

  8. 尚硅谷-宋红康-JVM上中下篇完整笔记-JVM上篇_内存与垃圾回收篇

    前言 一.jvm及java体系结构 1. Java及JVM简介 TIOBE语言热度排行榜 https://www.tiobe.com/tiobe-index/ 世界上没有最好的编程语言,只有最适用于具 ...

  9. 尚硅谷-宋红康-JVM上中下篇完整笔记-JVM中篇

    一.Class文件结构 1.概述 1.1 字节码文件的跨平台性 所有的JVM全部遵守Java虚拟机规范:Java SE Specifications,也就是说所有的JV环境都是一样的,这样一来字节码文 ...

最新文章

  1. javascript 中的eval方法 小窍门
  2. Atitit. 脚本语言的断点单步调试的设计与实现 attialx 总结 php 参照java
  3. ajax和promise的结合使用
  4. IDA无法反编译 and 提示错误
  5. Linux C编程之四 动态库(共享库)的制作
  6. linux压缩与解压缩 tar命令
  7. 计算机应用综合实践实验心得,综合实践活动培训心得体会范文(精选5篇)
  8. SEO网站优化团队官网模板
  9. kafka可视化客户端工具(Kafka Tool)的使用
  10. 视频(avi)转换为图片(Python代码实现)
  11. C语言ascll码表值和字符的互相转换的程序
  12. PMP 第10章 项目沟通管理
  13. Linux串口属性设置
  14. 物理内存是什么是计算机的显卡内存吗,物理内存和虚拟内存是什么意思怎么理解...
  15. 实训项目名称: 双绞线的制作
  16. 服务器防火墙部分指令
  17. 微信小程序连接WiFi
  18. 与小卡特一起学python 豆瓣_《父与子的编程之旅:与小卡特一起学Python》
  19. 薄如便签纸的概念闪存U盘:贴在电脑上就能用
  20. 二、LoRaWAN Gateway【LoRaWAN实战项目】

热门文章

  1. GPS、谷歌、百度、高德坐标相互转换
  2. 小程序setData原理
  3. 【最新】2017年注册测绘师考试测绘案例分析历年真题及答案解析
  4. 分享一些冷门好用的网站和软件
  5. C语言下实现冰雹猜想的算法
  6. 说说android下TV版本UC浏览器模拟鼠标的实现
  7. wacom怎么调压感_手绘板压感是什么 数位板压感怎么调【教程】
  8. Structure SLAM 论文阅读
  9. 文本信息事件信息抽取的方法
  10. PowerPoint VBA批量格式转换:pptx转pdf、ppt以及反向转换