Press "Enter" to skip to content

Category: 数据结构

数据结构之链表

之前介绍的动态数组,都是以用户的角度来看的,实际栈,队列底层都是依托于静态数组实现的,靠resize来解决固定容量问题。但是这次所说的链表是真正的动态数据结构(最简单的) 为什么链表是很重要的数据结构: 真正的动态数据结构 更深入的理解引用或者指针 更深入的理解递归 辅助组成其它数据结构 链表 数据存储在节点(Node)中 优点:真正的动态,不需要处理固定容量的问题 缺点:丧失了随机访问的能力…

Leave a Comment

数据结构之数组

每一种编程语言中基本都有数组。 数组的定义: 数组(array)是一种线性表数据结构,它用一组连续的内存空间来存储一组具有相同类型的数据。 从上面的定义中有几个关键词 首先它是一个线性表 线性表 线性表就是数据排列成一条线一样的结构,每个线性表上的数据最多只有前和后两个方向。除了数组,链表,队列,栈等也是线性表结构 非线性表 二叉树,堆,图等。之所以是非线性,是因为数据之间并不是简单的前后关系。 然后它是连续的内存空间和相同的数据类型…

Leave a Comment

时间复杂度和空间复杂度的简单讲解

时间复杂度是同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。 计算机科学中,算法的时间复杂度是一个函数,它定性描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况。 一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。 时间复杂度: 首先要说的是,时间复杂度的计算并不是计算程序具体运行的时间,而是算法执行语句的次数。 当我们面前有多个算法时,我们可以通过计算时间复杂度,判断出哪一个算法在具体执行时花费时间最多和最少。 常见的时间复杂度有: 常数阶O(1), 对数阶O(log2 n),…

Leave a Comment

什么是数据结构?什么是算法?

数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。再简单描述一下:数据结构就是描述对象间逻辑关系的学科。 算法就是操作数据的一组方法。 算法你可以理解为用程序解决实际问题的方法。比如排序算法,查找算法。(算法实际是编程过程中完成一件事采用的方法,比方说现实生活中做数学题时两个人都将题完成但是他们之间有一个用的时间很短就是因为采用了简便的方法。同样在编程过程中采用好的算法可以降低程序的时间复杂度) 数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上。 因此,我们无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。 数据结构是静态的,它只是组织数据的一种方式。如果不在它的基础上操作、构建算法,孤立存在的数据结构就是没用的。 程序=数据结构+算法 程序就是基于某种或某几种数据结构,采用某种算法或某几种算法去解决问题的过程。 如果还是不太清楚下面会举例说明的。 数据存储结构:简单的讲就是数据在计算机中的存储、组织数据的方式。…

Leave a Comment