随笔分类 - 基于java的数据结构
主要是弄懂常见的数据结构有哪些,各自的实现原理是什么?
摘要:1.栈的定义 栈是一种“先进后出”的一种线性数据结构,有压栈出栈两种操作方式。如下图: 2.栈的分类 栈主要分为两类: 静态栈 动态栈 【静态栈】 静态栈的核心是数组,类似于一个连续内存的数组,我们只能操作其栈顶元素。 【动态栈】 静态栈的核心是数组,类似于一个连续内存的数组,我们只能操作其栈顶节点
阅读全文
摘要:关于上一节中我们对添加操作的时间复杂度归结为O(n)是考虑了扩容操作(resize)在内的。就addLast(e)操作而言,时间复杂度为O(1),在考虑最坏情况下,每次添加均会触发扩容操作,需要移动n个元素,因此此时addLast操作的时间复杂度为O(n)。 (1)addLast(e)均摊时间复杂度
阅读全文
摘要:完成了数组的封装之后我们还需对其进行复杂度分析: 此处的复杂度分析主要是指时间复杂度分析,算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。 1.简单概念 在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不
阅读全文
摘要:前言:在此之前,我们封装的数组属于静态数组,也即数组空间固定长度,对于固定长度的数组当元素超过容量时会报数组空间不足。为了能更好的使用数组,我们来实现一个可以自动扩充容量的数组。 实现思路: 1.当数组容量达到事先定义值时创建一个空间是data数组两倍的newData数组(扩容); 2.把data数
阅读全文
摘要:前言:通过上一节我们对我们需要封装的数组,进行了基本的增删改查的封装,但只局限于int类型的操作,为了能提供多种类型数组的操作,我们可以将其进一步封装为泛型数组。 1.定义泛型数组相关概念 (1)泛型数组让我们可以存放任何数据类型 (2)存放的类型不可以是基本数据类型,只能是类对象 基本类型: (3
阅读全文
摘要:前言:在上一小节中我们已经会了如何获取和如何修改数组中的元素,在本小节中我们将继续学习如何判断某个元素是否在数组中存在、查询出某个元素在数组中的位置、以及删除数组中元素等方法的编写。 1.查找数组中是否包含元素e,返回true或false 有时候在查询过程中,我们不仅想知道是否包含该指定元素,还想是
阅读全文
摘要:前言:在上一小节中,我们已经对如何往数组中添加一个元素的方法进行了编写,此节中我们就如何查询出数组中元素与修改元素的方法进行编写。 在数组中,数据是存储在私有变量data中的,若我们想知道打印输出一些关于data中数据相关信息,我们可以使用toString()方法,在java中,该方法需要每个类自定
阅读全文
摘要:在上一小节中,我们对数组进行了一个基本的封装,该小节中,我们在上一次基础上,新增往数组添加元素的方法: 1.向所有元素后添加一个元素 思路: (1)先判断当前数组容量是否已满,未满则转入(2),否则抛出异常 (2)在元素下标为size的位置插入新元素 (3)维护我们的size值 2.在指定index
阅读全文
摘要:今天感冒了,全身酸软无力,啥样不想做,就来学习吧,此节我们从初步使用java中提供的数组,然后分析相关情况,过渡到封装我们自己的数组。 一.我们先来感受一下java提供的数组,以整型数组(int[])为例,相关代码如下: 1.对于数组最大优点:快速查询。例如我想知道scores下标为1数值是多少,我
阅读全文

浙公网安备 33010602011771号