数据结构与算法 — 必会
文章平均质量分 89
系统地介绍数据结构的知识与应用、计算机算法的设计与分析方法,主要内容包括线性表、树、图和广义表、算法设计策略以及查找与排序算法等
不埋雷的探长
深耕BigData技术,专注于大数据技术领域的知识分享。CSDN认证博客专家,目前就职于腾讯,内推可私聊~ 热爱软件,喜欢编程的阳光小伙子~ 千万千万不要放弃学习,千万千万要搞好人际关际,共勉~
展开
-
算法 —— 如何计算时间复杂度
Trie 树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。O(1): Constant Complexity: Constant 常数复杂度。O(log n): Logarithmic Complexity: 对数复杂度。O(n): Linear Complexity: 线性时间复杂度。O(n^2): N square Complexity: 平方。O(n^3): N square Complexity: 立方。O(2^n): Exponential Growth: 指数。原创 2022-10-07 15:58:14 · 890 阅读 · 0 评论 -
卷起来 -- 数据结构与算法
线性结构线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。 线性结构有两种不同的存储结构,即顺序存储结构【顺序表】和链式存储结构【链表】。 顺序存储结构的线性表称为顺序表,顺序表中的存储元素是连续的。 链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息。 线性结构常见的有:栈、数组、队列、双队列、串(一维数组)、链表和栈。非线性结构非线性结构包括:二维数组,多维数组,广义表,树结构(二叉树等),图结...原创 2022-03-11 14:34:59 · 848 阅读 · 0 评论 -
BAT 常规算法,认识一下
一、二叉树1.1 二叉树按层遍历1、针对二叉树的宽度优先遍历 2、宽度优先遍历常使用队列结构 3、面试中,该类题目常对换行有所要示,如将行号也打印出来题目一:给定一棵二叉树的头节点head,请按照现在大家看到的这种格式打印。要求打印成:按层序遍历结果为右侧:Java 代码实现: // 层序遍历 // 时间复杂度:O(n) // 空间复杂度:O(n) public List<List<Integer>> levelOrder..原创 2020-10-20 20:24:28 · 1224 阅读 · 3 评论 -
HashMap 扩容机制
HashMap在1.7 和1.8 做了比较大的改变1.7之前使用的就是数组 + 链表,它数据节点是一个Entry 节点,它的一个内部类;1.7之前它的数据插入过程是使用了头插入,头插入法虽然效率比较高,但在resize拓容过程时,反复调用一个transfer的方法,把里面的一些Entry进行一个rehash,可能会造成链表的循环,就可能在下一次Get的时候出现一个死循环的情况;1.7没有加锁,也可能在多线程并发的情况下,数据不能保证它是一个安全的,就是我push的进去的值,取出来还是我push进去的一个原创 2020-09-07 12:59:34 · 370 阅读 · 4 评论 -
常用八大数据结构总结及应用场景-附示例截图
什么是数据结构?官方解释:数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。大白话:数据结构就是把数据元素按照一定的关系组织起来的集合,用来组成和存储数据。逻辑结构分类:逻辑结构是从具体问题中抽象出来的模型,是抽象意义上的结构,按照对象中数据元素之间的相互关系分类。a.集合结构:集合结构中数据元素除了属于同一个集合外,他们之间没有任何其他的关系。 b.线性结...原创 2020-08-03 21:32:42 · 11657 阅读 · 0 评论 -
算法 —— 排序算法
目录一、常见排序算法汇总1、选择排序2、冒泡排序3、插入排序4、希尔排序5、归并排序6、快速排序7、计数排序8、基数排序二、算法思维导图【全面】下载一、常见排序算法汇总1、选择排序package com.java.z_exam.algorithm.c02_sort;public class T_0002_SelectionSort { public static void main(String[] args) { in原创 2020-09-08 09:37:22 · 294 阅读 · 0 评论 -
认识什么是算法 及 如何判断算法的好差
一、算法概述1.1 什么是算法?官方解释:算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。大白话:根据一定的条件,对一些数据进行计算,得到需要的结果。1.2 算法的时间复杂度分析算法的时间复杂度,就是算法的时间量度,记作:T(n) = O(f(n))。它表示随着问题规模 n 的增大,算未能执行时间的增长率和 f(n) 的增长率相同,称作算法的渐近时间复杂度,简称原创 2020-08-26 21:49:00 · 3052 阅读 · 0 评论