精华内容
下载资源
问答
  • 数据结构算法演示系统,动态演示数据结构算法执行过程的辅助教学系统
  • 数据结构算法与应用--C++语言描述(代码与习题答案)!!
  • java数据结构算法

    千人学习 2019-11-22 10:12:46
    做一门精致,全面详细的 java数据结构算法!!! 让天下没有难学的数据结构, 让天下没有难学的算法, 不吹不黑,我们的讲师及其敬业,可以看到课程视频,课件,代码的录制撰写,都是在深夜,如此用心,其心可鉴,他不掉头发,谁...
  • 数据结构算法与应用:C++语言描述》不仅仅介绍了理论知识,还提供了50多个应用实例及600多道练习题。 该资源中就是其习题答案与代码。
  • 数据结构算法与应用:C++语言描述的书本及习题答案.zip ) 网络整理版
  • 文件是网盘链接地址,2018.7.4上传,链接一直可用 本套视频为数据结构算法视频教程、哈工大_数据结构算法
  • 数据结构3.txt 数组完全单元.txt 数组操作.txt 数组递归退出.txt 数组递归退出2.txt 文件加密.txt 文件复制.txt 文件连接.txt 无向图.txt 时间陷阱.txt 杨辉三角形.txt 栈单元加.txt 栈操作.txt 桃子...
  • 数据结构算法的描述和分析

    千次阅读 2018-08-17 19:25:49
    数据结构概论 高级语言程序设计在解决某一实际问题的一般步骤是:分析实际问题、确定数学模型、设计或选择一个求解此数学模型的算法、编写程序进行调试和测试解决问题等几个步骤。 例1:已知:游泳池的长length和...

    数据结构概论

    高级语言程序设计在解决某一实际问题的一般步骤是:分析实际问题、确定数学模型、设计或选择一个求解此数学模型的算法、编写程序进行调试和测试解决问题等几个步骤。

    例1:已知:游泳池的长length和宽winde,求面积area。

    问题设计的对象有:游泳池的长length和宽wide,面积area;对象之间的关系(数学模型):A=L*W;

    程序:

    Main()

    {

    int len,wide,area;

    Scanf(“%d%d%\n”,&l,&w);

    Area=len*winde;

    Printf(“area=%d”,area);

    }

     

    解决游泳池面积或其他复杂的现实问题时,关键的不再是数学分析和计算方法,而是要设计出合适的数据结构,才能更有效有的解决生活的现实问题,著名的瑞士科学家沃思提出:程序设计=数据结构+算法      

    简单来说,数据结构是研究非数值的程序设计问题中计算机的操作对象以及它们之间的关系和操作的学科。

    具体来说,数据结构指的是数据之间的结构关系如何表示,如何存储,如何处理现实转化问题,即按某种关系组织起来的一组数据,再按一定的方式把它们存储在计算机的存储器中,并在这些数据上定义的一个运算的集合,称之为数据结构。

    基本概念和常用的术语

    数据:是客观事物的符号表示,在计算机科学中指所有能输入到计算机并能被计算机程序进行处理的符号总称。

    数据元素:是数据的基本单位。在计算机程序中通常作为一个整体考虑和处理。

    数据项:一个数据元素通常由若干个数据项组成,数据项是不可分割的最小单位。

    数据对象:是具有相同性质的数据元素的集合。

    数据结构是带有结构和操作的数据元素的集合。一般包含三个方面的内容。

    • 数据的逻辑结构

    在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系存在某种关系,这种数据元素是相互之间的关系称之为数据的逻辑结构。根据数据元素之间关系的不同特性,通常有下列四种基本结构形式。

    (1)集合:结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他关系,元素之间为松散关系。

    (2)线性结构:结构中的数据元素存在一对一的关系,除第一个和最后一个元素外,其他每个元素都有且仅有一个直接前驱和一个直接后继。

    (3)树形结构:数据元素之间存在一对多的关系。一个数据元素可以与一个或多个元素存在关系,而且具有层次之分,其结构形式如倒立的生长的树。

    (4)图状结构或网状结构:数据元素之间存在多对多的关系,不存在层次关系。在这种关系中,数据元素之间不受任何限制。

    以上描述的4种关系是数据元素之间的逻辑关系,又称之为逻辑结构。

    • 数据的存储结构

    讨论数据逻辑结构的目的是为了在计算机中实现对它的操作,因此还要研究如何在计算机中表示它。

    数据元素在计算机中的存储(表示)方式称之为数据的物理结构,又称存储结构。它包含数据元素及数据元素之间关系的存储。是依赖于计算机语言的。

    在计算机内,数据的存储结构可以用一下四种基本存储方法实现

    (1)顺序存储结构:是将逻辑上相邻的元素节点存储在物理位置上也相邻的存储单元中,元素之间的逻辑关系由存储单元的邻接关系表示。由此得到的存储结构也称之为顺序结构。该结构通常用数组来实现。

    (2)链式存储结构:不要求逻辑上相邻的元素(节点)在物理位置上也相邻,而是在结点中借助指针域与该结点逻辑上相邻元素在内存中的地址来实现结点间的逻辑关系。由此得到的存储结构称为链式存储结构。及借助于引用或指针来表示数据元素之间的逻辑关系,被存放的元素被随机的存放在内存中再用指针将它们链接在一起。

    (3)索引存储结构:在存储元素信息的同时,还建立附加的索引表。

    (4)散列存储结构:根据元素的关键字直接计算出该元素的存储地址。

    三、数据的运算

    数据的运算,即对数据元素施加的操作,是定义在数据的逻辑结构上的,每种逻辑结构都有一个运算的集合。

    数据的运算地数据结构不可分割的一个方面,在给定了数据的逻辑结构和存储结构之后,按照定义的运算集合及运算性质的不同,可能导致完全不同的数据结构。

    另外,同一种逻辑结构,可以采用不同的存储结构。选择何种存储结构来表示相应的逻辑结构,要根据具体问题具体分析,主要考虑的还是数据运算方便及算法的时间和空间上的要求。

    算法的描述与分析

    算法描述

    算法:是对问题求解步骤的一种描述,是指令的有限序列。其中每条指令表示一个或多个操作。一个算法应具备以下5个特性:

    有限性:算法必须在有限的步骤之后结束

    确定性:算法的每一步都是确切的含义,无二义性。即在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的输出

    输入:一个算法可以接受零个或多个输入

    输出:一个算法至少有一个或多个输出

    可行性:算法中的每一步都可以通过已经实现的基本运算的有限次运行来实现

    算法分析

    求解一个问题可能有多种不同的算法,而算法的好坏直接影响程序的执行效率,且不同算法之间的运行效率相差巨大。

    设计一个“好”得算法应考虑达到算法应达到的四个目标:正确性、可读性、健壮性高效率与低存储量需求

    一个算法的评价可以从算法执行的时间与算法的所占用的内存空间两个方面来进行。

    算法的时间复杂度(time completexity)又称为计算复杂度,是算法有效性的度量之一。

    在解决实际问题的过程中不管是简单或复杂的算法,都必须是经过对应着一定的基本操作的次数。显然,如果一个算法中,运行基本操作的次数越少,那么它运行的时间也就相对越少,反之,如果次数越多,其运行的时间也就相对越多。所以,通常用它来衡量一个算法的运行时间性能或称之为计算性能。

    算法的空间复杂度(space completexity)是对一个算法在运行时占用存储空间大小的度量,也是衡量算法的有效性的一个重要的因素。因此,在分析一种算法的性能,不但需要分析算法的运行时间,还要分析算法所采用的的数据结构所占的空间。

    存储空间包括内存和外存,一般用字节作为空间的基本度量单位,问题的规模(或大小)为n,算法所需空间的空间单元数s一般是问题规模n的函数f(n)记作:S(n)=O(F(n))

     

    展开全文
  • 408数据结构算法题解

    千次阅读 2020-01-19 18:29:47
    计算机考研408-数据结构 线性表算法题 问题: 删除有序顺序表值在s到t之间的所有元素 我的代码 答案代码

    计算机考研408-数据结构

    线性表算法题

    问题:
    删除有序顺序表值在s到t之间的所有元素

    1. 我的代码

    在这里插入图片描述

    1. 答案代码
      在这里插入图片描述
    展开全文
  • 本书在简要回顾了基本的C++ 程序设计概念的基础上,全面系统地介绍了队列、堆栈、树、图等基本数据结构,以及贪婪算法、分而治之算法、分枝定界算法等多种算法设计方法,为数据结构算法的继续学习和研究奠定了一...
  • python+数据结构算法

    2021-05-21 01:51:28
    python+数据结构算法
  • 数据结构算法中的经典算法

    万次阅读 多人点赞 2018-07-19 21:47:12
    数据结构算法之经典算法 常见数据结构算法整理总结(上) 常见数据结构算法整理总结(下) 二、针对性参考 1) 排序 数据结构算法之经典排序 2)二叉树 数据结构算法之二叉树+遍历+哈夫曼树 ...

    一、概述

    常见的数据结构和算法包含以下内容:

    1、常见数据结构:

    线性:数组 (Array)、栈 (Stack)、队列 (Queue)、链表 (Linked List)、块状数组(数组+链表)
    树: 堆(heap)、二叉搜索树(binary search tree)、Merkle Tree(Hash Tree)、B-/B+ Tree、AVL树、红黑树、二叉树、哈夫曼树
    图 (Graph)
    散列表 (Hash)

    2、常见算法

    基础:枚举,递归,分治,模拟,贪心,动态规划,剪枝,回溯
    排序:冒泡、快速、直接选择和堆、直接插入和希尔排序、归并排序
    查找:顺序查找、二分查找、索引查找、二叉排序树、哈希查找
    图算法:深度优先遍历与广度优先遍历, 最短路径,最小生成树,拓扑排序

    二、综合性参考

    二、针对性参考

    1) 排序

    2)二叉树

    展开全文
  • Java版数据结构算法视频教程(44集版),附源码资料 目录找不到 讲的很详细
  • 对于算法时间复杂度的粉系需要牢记一句话:将算法中基本操作的执行次数作为算法时间复杂度的度量。时间复杂度并不是执行完一段程序的总时间,而是其中基本操作的总次数。 在考试的算法题目中你总能找到一个n,称为...

    时间复杂度

    • 对于算法时间复杂度的分析需要牢记一句话:将算法中基本操作的执行次数作为算法时间复杂度的度量。时间复杂度并不是执行完一段程序的总时间,而是其中基本操作的总次数。
    • 在考试的算法题目中你总能找到一个n,称为问题的规模。如你要处理的数组元素的个数为n,而基本操作所执行的次数是n的一个函数f(n)。对于求其基本操作执行的次数,就是求f(n)。求出以后就可以取出f(n)中随n增大而增大的最快的项,将其系数变为1,作为时间复杂度的度量。
      在这里插入图片描述

    计算时间复杂度的步骤

    1. 确定算法中的基本操作以及问题的规模
    2. 根据基本操作执行情况计算出规模n的函数f(n),并确定时间复杂度T(n)=O(f(n)中增长最快的项/此项的系数)在这里插入图片描述
    • 注意:一般将最坏的情况作为算法时间复杂度的度量
    例子1:
    void fun(int n)
    { 
        int  i = 1, j =100;
        while(i<n)
        {
            ++j;
            i+=2;
        }
    }
    解析:
    1.找出基本操作。
    显然++j;i+=2;都是基本操作
    2.确定规模
    确定n之后,可以看出循环是否结束和i有关,设循环m次后结束循环,此时i>n我们可得i最后的值为1+2m我们设1+2m+K=n(因为1+2m>n,所以加
    一个常数K来使他们想等从而求得m与n的关系,K是常数并不影响最终时间复杂度)得m=(n-1-K)/2,f(n)=(n-1-K)/2,其中增长最快的就是
    n/2,所以时间复杂度T(n)=O(n).
    
    例子2:
    void fun(int n)
    {
        int i,j,x=0;
        for(i=0;i<n;++i)
        {
        	for(j=i+1;j<n;++j)
        	{
        	++x;
        	}
        }
    }
    解析:
    1.找出基本操作
    ++x:处于最内层的循环,所以取++x;为基本操作。
    2.确定规模
    显然n为规模。
    下面列举i,j不同值情况下++x的执行次数
    i   j   ++x 
    0   1   n-1
    1   2   n-2
    ...........
    n-1 n    0
    利用等差数列求和的公式求出基本操作的执行次数:n(n-1)/2
    变化最快的项为n^2/2,因此时间复杂度为T(n) = O(n^2) 
    
    例子3:
    void funn(int n)
    {
    	int i=0,s=0;
    	while(s<n)
    	{
    		++i;
    		s+=i;
    	}
    }
    1.找出基本操作
    ++i和s+=i;都为基本操作
    2.确定规模
    显然n为规模
    设执行m次循环后结束,s1=1, s2=1+2, s3=1+2+3, ..., sm=m(m+1)/2(等差数列求和公式)
    求得m与n的关系,然后找出最高项将其系数变为1,得到T(n)=O(根号n)
    

    空间复杂度

    一个程序的空间复杂度是指运行完一个程序所需内存的大小。利用程序的空间复杂度,可以对程序的运行所需要的内存多少有个预先估计。一个程序执行时除了需要存储空间和存储本身所使用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的工作单元和存储一些为现实计算所需信息的辅助空间。程序执行时所需存储空间包括以下两部分。  
    (1)固定部分。这部分空间的大小与输入/输出的数据的个数多少、数值无关。主要包括指令空间(即代码空间)、数据空间(常量、简单变量)等所占的空间。这部分属于静态空间。
    (2)可变空间,这部分空间的主要包括动态分配的空间,以及递归栈所需的空间等。这部分的空间大小与算法有关。
    一个算法所需的存储空间用f(n)表示。S(n)=O(f(n))  其中n为问题的规模,S(n)表示空间复杂度。

    • 设计算法时,时间复杂度要比空间复杂度更容易出问题,所以一般情况一下我们只对时间复杂度进行研究。一般面试或者工作的时候没有特别说明的话,复杂度就是指时间复杂度。
    展开全文
  • 数据结构算法题汇总

    万次阅读 2019-04-13 19:40:07
    3. 算法一般都可以用哪几种控制结构组合而成? 答案:顺序、选择、循环。 4. 算法的时间复杂度是指? 答案:算法执行过程中所需要的基本运算次数。 5. 算法的空间复杂度是指? 答案:执行过程中所需要的存储空间。...
  • 哈工大数据结构算法PPT(张岩)

    热门讨论 2016-01-25 15:28:39
    国家精品课程网上有相应的视频教程,这是对应的ppt讲义,分别由刘杨、李秀坤、张岩等几位老师轮流授课,个人觉得是数据结构讲的比较好的
  • 数据结构算法总结(伪代码)

    千次阅读 2018-06-03 17:01:48
    存储结构:   包含2个域:数据域Data和指针域Link 伪代码实现 typedef struct LNode { //链表结点  ElemType data; //结点数据域  struct LNode * link; //结点链域 ...
  • 目录 第一章 C++回顾 函数与参数 1.交换两个整数的不正确代码。 异常 10.抛出并捕捉整型异常。 第一章 C++回顾 函数与参数 1.交换两个整数的不正确代码。 //test_1 void swap(int x,int y) ... int t...
  • C/C++实现数据结构算法视频培训课程全面介绍计算机行业,基本的数据结构算法,既有理论的深度也有实战的技法。课程全程讲师手敲代码,一步步代你走进数据结构算法。 本课程涉及的数据结构算法有,栈,队列,...
  • 数据结构算法:为什么要学习数据结构算法 数据结构算法到底是什么 数据结构数据结构指的是计算机中数据的组织形式,分为逻辑结构和物理结构两个维度。其中,逻辑结构是对数据组织形式在逻辑上的抽象,物理...
  • 数据结构算法书籍推荐

    万次阅读 多人点赞 2019-03-16 18:49:31
    学习数据结构算法,还是很有必要看几本相关的书籍,但根据不同基础的人,合适看的书也不一样,因此,针对不同层次、不同语言的人,推荐几本市面上口碑不错的书。 1. 入门级 针对刚入门的同学,建议不要急着去看...
  • 数据结构算法学习笔记

    万次阅读 多人点赞 2018-09-25 13:55:49
    本文是王争老师的《算法数据结构之美》的学习笔记,详细内容请看王争的专栏。有不懂的地方指出来,我做修改。 数据结构算法思维导图 数据结构指的是“一组数据的存储结构”,算法指的是“操作数据的一组...
  • 数据结构算法分析:C语言描述(原书第2版)》内容简介:书中详细介绍了当前流行的论题和新的变化,讨论了算法设计技巧,并在研究算法的性能、效率以及对运行时间分析的基础上考查了一些高级数据结构,从历史的角度...
  • 数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合用计算机存储、组织数据的方式。数据结构分别为逻辑结构、(存储)物理结构和数据的运算三个部分。 为什么要学数据结构? 首先,因为数据结构作为...
  • 数据结构算法评价四个标准

    万次阅读 热门讨论 2015-08-30 23:52:35
    法可能面临着接受各种各样的数据,当算法接收到不适合算法处理的数据算法本身该如何处理呢? 如果算法能够   处理异常数据,处理能力越强,健壮性越好。   时空性    算法的时空性是该算法...
  • LeetCode全部题目和详细解答 数据结构算法 程序员面试求职必备
  • 图解数据结构算法

    万人学习 2020-07-27 10:56:16
    【为什么学习数据结构算法】     程序=数据结构+算法数据结构算法是程序的基础,没有系统地学习过数据结构算法的程序员只能称作是coder,知道我们写的代码使用了什么数据结构,它的特征是什么。...
  • 数据结构算法 - PHP

    千次阅读 2019-12-19 10:04:16
    学习数据结构算法, 并且结合PHP, 了解PHP背后实现的原理. 2.学习/操作 暂见:https://xueyuanjun.com/books/data-structure-and-algorithms 后续补充 ... 3.问题 TBD ...
  • Java数据结构算法入门

    万次阅读 多人点赞 2018-04-29 11:53:50
    第一部分:Java数据结构要理解Java数据结构,必须能清楚何为数据结构数据结构:Data_Structure,它是储存数据的一种结构体,在此结构中储存一些数据,而这些数据之间有一定的关系。而各数据元素之间的相互关系,又...
  • 有趣的数据结构算法13——队列的初始化、入队与出队什么是队列队列的初始化入队出队实现代码GITHUB下载连接 前两天出去玩了,过两天又可以去旅游了,回来还是要好好学习呀!新的结构又要出现了。我心里有点害怕,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,439,763
精华内容 575,905
关键字:

数据结构算法

数据结构 订阅