数据结构
文章平均质量分 81
时空恋旅人
坚持不懈的学习态度和坚韧的人生品质
展开
-
算法 LeetCode题目解析--03(两类查找)
1.两类查找例题1 两个数组的交集:leetcode 349 解题思路:这是典型的第一类查找,查找有无,所以我们会想到使用Set,将第一个数组的元素放到数组中,再判断第二个数组的元素是否存在于第一个元素的数组中,如果存在则加入到一个新的Set,最后返回这个新的Setpublic int[] intersection(int[] nums1, int[] nums2) { Set<Integer> temp = new HashSet<...原创 2022-04-18 14:23:52 · 627 阅读 · 2 评论 -
算法 LeetCode题目解析--02(数组的问题)
1.数组问题很常见 2.二分查找法public class BinarySearch { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5}; int i = binarySearch(arr, 4); } //找到就返回target 没找到就返回-1 static int binarySearch(int[] arr, int...原创 2022-04-07 21:57:16 · 1139 阅读 · 0 评论 -
玩转算法面试--01(时间复杂度分析)
1.什么是大O 如果对于一个算法来说n是他的数据规模,O(f(n))则表示运行算法所需要执行的指令数,和f(n)成正比。原创 2022-02-13 22:51:31 · 377 阅读 · 0 评论 -
数据结构02--栈和队列
1.栈的定义2.栈的实现时间复杂度: 如果触发resize 均摊后依然是O(1)package com.wx.dataStructure.stack;import com.wx.dataStructure.array.Array;/** * 利用动态数据实现的栈 * Created by wangxiang on 2021/8/15 */public class ArrayStack<E> implements Stack<E&...原创 2021-08-15 23:25:17 · 92 阅读 · 0 评论 -
数据结构--02(链表)
1.链表的重要性 2.链表的实现对于链表来说我们想要访问存在在这个链表的所有节点,必须存放他的头往链表中添加元素在链表的中间添加新的元素,在索引为2的地方添加元素666思路:你得先找到索引为2的前一个元素是什么,只能通过遍历,找到索引为1的元素,然后创建出新的元素,索引为1的next赋值给新元素的next,新元素赋值给索引为1的next自己先写出来,下周检查。...原创 2021-05-31 23:26:14 · 217 阅读 · 4 评论 -
数据结构--01(数组)
1.原创 2020-04-12 01:50:54 · 185 阅读 · 0 评论 -
数据结构
1.数组原创 2020-04-13 22:25:27 · 157 阅读 · 0 评论 -
数据结构1--线性表(java代码实现线性表的顺序存储)
1.数据结构的概念 数据:信息载体,计算机处理的对象的总称 数据元素:也称结点,组成数据的基本单位 数据项:数据项是数据的最小单位 2.线性结构: 有且仅有一个开始节点和一个终端节点,所有节点最多只有一个直接前驱和一个直接后继 3.复杂度 复杂度是衡量一个算法好坏的重要手...原创 2018-11-11 23:12:48 · 544 阅读 · 0 评论 -
数据结构8--二叉树的历遍(java代码实现二叉树的遍历)
本篇博客主要基于二叉树的创建上实现对二叉树的遍历1.二叉树的遍历 二叉树的遍历是指以某种次序访问二叉树中的所有节点,并且使每个节点恰好只被访问一次。 遍历的方式有三种: 1.先序遍历: 先序遍是历先访问根节点 访问左子树 访问右子树 2.中序遍历 中序遍历是把根节点的遍历放在中间 3.后序遍历:...原创 2018-11-19 13:46:06 · 253 阅读 · 0 评论 -
数据结构11--查找
1.查找的概念查找表是由同一类型的数据元素构成的集合,表中每个数据元素均由若干个数据项组成,每个数据项的值称为该数据元素的关键字,其中可以唯一标识一个数据元素的关键字称为主关键字,否则称为次关键字。线性表查找:线性表查找分为顺序查找算法和折半查找算法树结构查找2.顺序查找算法 顺序查找的基本思想是,比较目标值与表中的每一个元素的值,如果某个元素的值与目标的值相等,则查找成功,...原创 2018-11-27 13:52:13 · 251 阅读 · 0 评论 -
数据结构10--排序算法
1.目标 理解插入排序的基本思想,理解交换排序的基本思想 运用插入排序的思想实现直接插入排序,折半插入排序,希尔排序,运用交换排序的思想实现冒泡排序,快速排序2.插入排序 每次将一个待排序的数据元素,按照其关键字的大小插入到前面已排好序的有序序列的适当位置,使插入以后的数据序列仍然为一个有序序列,直到整个序列成为有序序列为止 1.直...原创 2022-02-19 17:49:04 · 1166 阅读 · 0 评论 -
数据结构6--哈希表
在结构中查找数据的时候需要进行一系列和关键字作比较的动作,这种查找建立在比较的基础上。查找的效率和比较的次数密切相关,我们希望能直接找到我们想要的数据。因此必须在数据的存储位置和关键字之间建立一个确定的对应关系,使得每一个关键字和结构中的唯一储存的位置对应,这个对应关系称为哈希函数,这个思想建立的表称为哈希表。1.哈希表 哈希表(hash table)也叫散列表,是根据关键...原创 2018-11-15 11:15:17 · 308 阅读 · 0 评论 -
数据结构5--递归
1.什么是递归? 是指在定义自生的过程中有直接或间接的调用自身的一种算法2.什么样的问题可以用递归算法? 一个问题可以被分解为若干的子问题 子问题和上层问题的解决方案一致 外层问题的解决依赖于子问题的解决3.举个例子 计算n的阶乘:n! =n*(n-1)! 使用的时候要注意两点,第一不能无限递归下去,那就成死循环了,第二要计算递归方法的当前值,需要重复调用自...原创 2018-11-15 09:43:13 · 187 阅读 · 0 评论 -
数据结构9--图
1.图 图是一种重要的非线性数据结构,它由非空的顶点集合和描述顶点之间的相互关系的有限集合组成,图可以用二元组定义为G=(V,E),其中G表示一个图,V表示图中顶点的集合,E表示图中边的集合。路径上边的数量称为路径的长度。 图的常用存储结构: 邻接矩阵 邻接表...原创 2018-11-21 11:44:45 · 181 阅读 · 0 评论 -
数据结构7--树和二叉树初识
1.树的基本概念 树是一种重要的非线性结构,他是由n个节点组成的有限集合(n>0) n=0时,称为空树,树的顶端节点称为树的根,其余节点可分为若干个互不相交的子集,每个子集本身又是一棵树,称为 根的子树。 这棵树有9个节点,所有的度=节点数-1,所...原创 2018-11-16 10:25:56 · 183 阅读 · 0 评论 -
数据结构2--线性表(java代码实现线性表的链式存储)
1.链式存储 2.分析 每个节点为一个对象,该对象包含数据域和指针域 整条单链表为一个对象,他和节点对象进行组合。 3.java代码实现: 首先抽象出一个接口,这个接好包含集合的基本操作 package com.wx.datastructure.base;public interface LinkList &l...原创 2018-11-13 00:11:12 · 602 阅读 · 0 评论 -
数据结构3--栈(java实现栈的顺序存储)
1.栈 栈也叫堆栈,是一种限制只能在某一端进行插入和删除操作的线性表 栈的 顺序存储结构下的进栈操作: 栈的链式存储结构如下 2.java代码实现栈的顺序存储 首先栈是顺序存储的,所以底层用WxArrList实现,WxArrList是我自己实现的线...原创 2018-11-13 23:20:48 · 314 阅读 · 0 评论 -
数据结构4--队列(java代码实现队列的链式存储)
1.什么是队列? 队列也叫队,时允许在一段进行擦汗如另一端进行删除的运算受限的线性表。区别队列和栈:栈时先进后出,队列时先进先出。 2.顺序队列 队列的顺序储存结构称为顺序队列,可以做到不浪费地址空间 顺序队列使用front和rear两个指针分别指向队头元素和队尾元素的位置...原创 2018-11-14 10:59:36 · 486 阅读 · 0 评论 -
数据结构12--时间复杂度的计算
时间复杂度 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,基座T(n)=O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进算法时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。 一般情...原创 2019-03-15 16:35:04 · 760 阅读 · 0 评论