![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
文章平均质量分 84
K@rna
这个作者很懒,什么都没留下…
展开
-
算法与数据结构(五)链表
目录概念几种常见链表单链表插入、删除查询循环链表双向链表对比单链表删除操作插入操作按值查询操作 概念 链表是一种物理存储单元上非连续、非顺序的存储结构,通过指针将一组零散的内存块串联在一起。由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 几种常见链表 单链表 链表中记录下个结点地址的指针叫作后继指针next。单链表中有两个特殊的结点,分别是第一个结点和最后一个结点。通常我们习惯性地把第一个结点叫作原创 2021-03-25 16:15:02 · 122 阅读 · 0 评论 -
算法与数据结构(四)数组
目录概念根据下标随机访问数据的原理插入与删除数据插入操作删除操作数组与容器类 概念 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 而线性表(Linear List)就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。除了数组之外,链表、队列、栈等也是线性表结构。 与它相对立的概念是非线性表,比如二叉树、堆、图等。之所以叫非线性,是因为在非线性表中,数据之间并不是简单的前后关系。 根据下标随机访问数据的原理 计算机会给每个内存单元分配原创 2021-03-19 14:32:19 · 398 阅读 · 0 评论 -
算法与数据结构(三) 时间复杂度分析 [例题]
时间复杂度分析 用几种分析方法分析下面函数的时间复杂度 int array[] = new int[10]; int len = 10; int i = 0; void add(int element) { if (i >= len) { int new_array[] = new int[len*2]; for (int j = 0; j < len; ++j) { new_array[j] = array[j]; } arra原创 2021-03-19 11:03:24 · 1047 阅读 · 0 评论 -
算法与数据结构(二)最好、最坏、平均、均摊时间复杂度
目录前言最好、最坏情况时间复杂度最好情况时间复杂度最坏情况时间复杂度平均情况时间复杂度均摊时间复杂度 前言 上一篇内容中学习了复杂度的大 O 表示法和几个分析技巧,这次学习一下四个复杂度分析方面的知识点,最好情况时间复杂度(best case time complexity)、最坏情况时间复杂度(worst case time complexity)、平均情况时间复杂度(average case time complexity)、均摊时间复杂度(amortized time complexity) 最好、最原创 2021-03-17 17:35:49 · 194 阅读 · 0 评论 -
算法与数据结构(一)分析算法的执行效率和资源消耗
前言 学习数据结构和算法不仅仅是让我们可以用更合理的方式实现程序,使应用的程序性能更佳,更重要的是,它会影响你的程序思维,帮助你理解某些框架的底层实现,更方便你造轮子。 我最近在极客App上学习王争老师(前Google员工)的课程,《数据结构与算法之美》,接下来用该篇来记录一下入门篇学习内容。 开篇 入门篇主要讲解时间、空间复杂度,通过实例,学习复杂度分析,为之后的学习铺路。通过这一模块的学习,掌握时间、空间复杂度的概念,大 O 表示法的由来,各种复杂度分析技巧,以及最好、最坏、平均、均摊复杂度分析方法。原创 2021-03-16 16:44:44 · 493 阅读 · 1 评论