数据结构

主讲教师: 李群 副教授 / 山东航空学院

教学进度:
  • 预报名
  • 进行中
  • 已结束

学时安排:48学时

学分:2分

数据结构是计算机科学与技术专业及其相近专业的学科基础课程,系统讲授数据结构概念、原理和应用,是解决复杂工程问题的重要基础。它所讨论的知识内容和提倡的方法,无论对进一步学习计算机领域的其它课程,还是对从事大型信息工程甚至操作系统的开发,都是非常重要的基础和保障,通过本课程的学习有助于提升学习者的算...
  • 719795

    累计页面浏览量

  • 520

    累计选课人数

  • 1221

    累计互动次数

06-06 17:52 李群 山东航空学院 在数据结构课程中提问:

生活中的排序

生活中你遇到过排序问题吗,你是怎么处理的?你使用的APP中有没有排序,能否举例说明。

  • 07-08 08:27 马永岩

    生活中常遇到排序问题,比如整理衣柜时按季节或穿着频率给衣服排序,处理待办事项时按紧急重要程度排序;使用的APP里也有很多排序功能,像购物APP按价格、销量给商品排序,通讯录按姓氏首字母排序,这些排序都让生活更有条理、高效。
  • 查看全部(36条)

06-06 17:47 李群 山东航空学院 在数据结构课程中提问:

这是哪种排序方法?

打扑克牌时,每抓一张牌,插入到合适位置,直到抓完牌为止,即可得到一个有序的序列,这个过程使用的是哪一种排序算法,请描述该算法的算法思想。

  • 07-08 08:26 马永岩

    这个过程使用的是插入排序算法。其算法思想是:将数组分为已排序和未排序两部分,初始时已排序部分只有第一个元素。然后从第二个元素开始,依次将未排序元素插入到已排序部分的合适位置,直到所有元素都插入完毕,数组就有序了。
  • 查看全部(33条)

06-06 18:09 李群 山东航空学院 在数据结构课程中提问:

快速排序一定比其他的排序算法快吗?

快速排序是基于关键字比较的排序算法中效率最好的算法,但在实际应用中它一定比其他排序快吗,并请说明你的理由。

  • 07-08 08:26 马永岩

    平均时间复杂度:快速排序平均时间复杂度是O(nlogn),在基于关键字比较的排序算法中效率较高。但像归并排序、堆排序等算法平均时间复杂度也是O(nlogn),在数据量较大且分布随机的情况下,快速排序通常表现出色,但不一定绝对快于其他同复杂度的算法。
    最坏时间复杂度:快速排序最坏时间复杂度为O(n^{2}),比如在数据基本有序的情况下,每次划分都极不均匀,退化为冒泡排序。而像堆排序等算法,最坏时间复杂度依然是O(nlogn),此时快速排序就会比堆排序等慢很多。 空间复杂度:快速排序空间复杂度平均为O(logn),最坏为O(n)。归并排序空间复杂度稳定为O(n),若空间有限,快速排序在最坏情况下可能不如归并排序。而且快速排序递归实现时,递归深度也可能受栈空间限制。
    数据特性:对于小规模数据,插入排序等简单排序算法可能因代码简洁、常数项小而更快。对于基本有序的数据,直接插入排序时间复杂度接近O(n),比快速排序快。
    所以,快速排序虽通常高效,但实际中排序算法的快慢受多种因素影响,不能说它一定比其他排序算法快。
  • 查看全部(40条)

06-06 18:04 李群 山东航空学院 在数据结构课程中提问:

怎样修炼自己的编程能力?

通过本章的学习,结合你的编程学习之路,谈谈你是怎样或者打算怎样提高自己的编程能力。

  • 07-07 22:06 刘若希

    修炼编程能力需理论与实践结合:先扎实掌握数据结构、算法等基础理论,理解其原理和适用场景;再通过大量编程练习,从模仿示例代码到独立解决实际问题(如刷算法题、做小项目),在实践中巩固知识;同时注重代码规范和调试能力,多阅读优质源码学习思路,遇到问题主动查资料、请教他人,持续积累经验并复盘优化,逐步提升解决复杂问题的能力。
  • 查看全部(30条)

06-06 18:01 李群 山东航空学院 在数据结构课程中提问:

设计算法输出二叉树某层上的所有结点

试思考,如何设计算法实现输出一棵二叉树某层上的所有结点的值。

  • 07-07 22:05 刘若希

    可采用广度优先搜索(BFS)算法:借助队列存储各层节点,初始化时将根节点入队并记录当前层号;遍历队列时,先获取当前层的节点总数,依次出队并记录节点值,同时将它们的左右子节点入队,完成当前层遍历后层号加1;重复操作直至到达目标层,此时记录的节点值即为该层所有节点的值。
  • 查看全部(29条)

06-06 18:00 李群 山东航空学院 在数据结构课程中提问:

哈希表性能与哪些因素相关?

哈希表是查找效率极高的查找结构,你知道它的查找效率与什么有关吗?可以通过具体的哈希表进行讨论

  • 07-07 22:05 刘若希

    哈希表的性能主要与三个因素相关:一是哈希函数的选择,好的哈希函数能让关键字均匀分布,减少冲突;二是处理冲突的方法,如线性探测法易产生聚集现象降低效率,而链地址法则可缓解;三是装载因子(表中记录数与表长的比值),装载因子越大,冲突概率越高,查找效率越低,例如装载因子为0.7时的查找效率通常高于0.9时。
  • 查看全部(34条)

06-06 18:00 李群 山东航空学院 在数据结构课程中提问:

哈希表中的同义词是否一定相邻存储?

在构建哈希表时,若采用线性探测方法处理冲突,则所有同义词(具有相同哈希函数值的关键字)记录在表中一定相邻吗?

  • 07-07 22:04 刘若希

    在哈希表中采用线性探测法处理冲突时,同义词不一定相邻存储。因为当某同义词插入时,若其哈希地址已被占用,会依次探测下一个空闲位置并插入,后续若再有同义词插入,可能因之前的占用继续向后探测,导致多个同义词之间被其他非同义词隔开,因此它们在表中不一定相邻。
  • 查看全部(31条)

06-06 18:08 李群 山东航空学院 在数据结构课程中提问:

带负权值边图的最短路径问题

如果在一个图中的边有负的权值出现,那最短路径求解时是否各种算法策略都可以?比如:Floyd、Dijkstra算法能否得到正确解,为什么呢?

  • 07-07 22:04 刘若希

    当图中存在负权值边时,Dijkstra算法无法得到正确解,因为它默认已确定最短路径的节点不会因后续负权边而缩短距离,这一假设在负权边存在时不成立;而Floyd算法可处理含负权边的图(但不能有负权回路),因其通过动态规划逐步更新所有节点对的最短路径,能适应负权边的影响。
  • 查看全部(33条)

06-06 18:03 李群 山东航空学院 在数据结构课程中提问:

栈与队列的异同?

结合具体应用,谈谈栈与队列的相同点及区别

  • 07-07 22:03 刘若希

    栈和队列都是操作受限的线性表,可通过数组或链表实现。不同的是,栈遵循“后进先出”,仅在栈顶操作,如函数递归调用依赖它;队列遵循“先进先出”,在队尾插入、队头删除,如打印队列按顺序处理任务,两者因操作规则不同适用于不同场景。
  • 查看全部(29条)

06-13 16:24 李群 山东航空学院 在数据结构课程中提问:

广义表与线性表本质区别

从逻辑结构角度阐述广义表与线性表的本质区别,并说明这种差异对存储实现的影响。

  • 07-07 22:03 刘若希

    从逻辑结构看,线性表元素仅为不可再分的原子且呈单一线性关系;广义表元素可是原子或子表(其他广义表),存在嵌套层次结构。这种差异使线性表存储简单(用数组或单链表存原子及后继),而广义表需特殊节点(含标志位区分原子/子表、对应值或指针及后继指针)来处理嵌套,存储实现更复杂。
  • 查看全部(102条)

常见问题

  • 1.我该如何学习这门课程?

    (1)首先您要注册一个学银在线的账号。

    (2)您需要有一定的上网条件,能够流畅的观看教学视频。在观看的过程中,您可以选择在PC端登陆我们的网页, 也可以选择下载我们的app学习通,通过手机客户端来学习。

    (3)您一旦报名选择了课程,我们的课程主讲老师或课程团队会通过通知的形式给您发送课程有关的消息,同时会抄送您的邮箱,请您及时查收。

  • 2.我在学习过程中遇到问题了,怎么办?

    您可以通过以下几种方式获取帮助:

    (1)在课程群聊中发布求助信息,说不定和你一起学习这门课的小伙伴就能够解决你的问题呢;

    (2)在课程讨论区留言,课程团队看到后将会及时回复。

    (3)联系我们的客服,或者随时给我们发邮件,邮箱地址:xueyinkf@chaoxing.com。

  • 3.我是新手,能否给我一些学习建议?

    (1)我们的课程采用MOOC的方式授课,因此您可以自由安排您的学习时间、学习地点。但我们仍旧希望您每周能都有固定的时间持续进行本课程的学习,根据人的记忆曲线显示这种规律的学习方式能够最大限度的提升您的学习质量。

    (2)学习的过程比较容易,为了检验您的学习成果,我们的课程团队会在课程章节结束后布置测验或作业,希望您尽可能的按时独立完成。如果有没有掌握的知识点,您可以继续回看复习课程。

    (3)希望您能够积极参与课程的讨论,与各位学习者一起煮酒论英雄。在讨论的过程中,不光可以对课程所学内容温习内化,还能互相碰撞出思想的火花,相信您一定会有额外的收获。

  • 4.课程会不会很难、很枯燥?

    (1)我们的课程都是老师经过精心设计拍摄制作而成,并且由于是MOOC的方式,所以课程拆分成了不同的知识点,学习起来一点也不费劲。

    (2)我们的课程多采取理论结合实际的授课方式,课程中也有许多案例的呈现,相信会给学习者带来诸多方面的启发。我们也将力求做到深入浅出,支持学习者将研究发现转化为实践,改进自身教学。