数据结构与算法周口师范学院

我们生活的现实世界中所有物质都可以抽象为数字、文字、声音、图像和视频,这些数据存储在计算机中,构成了信息世界,经过处理后又服务于我们社会生活的方方面面。

人们利用计算机的目的是解决实际的应用问题。数据结构与算法的研究涉及构筑计算机求解问题过程的两大基石:一是刻画实际问题中信息及其关系的数据结构,二是描述问题解决方案的算法。所以说“数据结构与算法”这门课程是计算机专业课程的核心。

作为学科的专业基础核心课程,《数据结构与算法》对应于学科中问题求解的理论、抽象和设计的方法论,在学科知识体系中具有核心的重要位置。它既是对以往课程的深入和扩展,也为深入地学习其他专业课程打下基础,课程中涉及到的基本的线性结构、树、图等数据结构和查找、排序算法,是计算机科学的基本功。B+树、散列(Hash)等高级数据结构,也是数据库、操作系统、编译原理、计算机网络等重要专业课程的基础。本课程在计算机学科中与其他课程的关系如图1所示。

掌握“数据结构”中的基本概念、合理组织数据的基本方法、高效处理数据的基本算法、常用的经典算法、通用的程序设计技术,以及面对实际问题时选择恰当数据结构并设计高效算法的能力,培养学生用计算思维分析问题的能力,提高学生上机解决较大规模实际问题的能力,为进一步的软件开发打下坚实的基础。

1.课程体系

课程突出数据组织方法与实现技术构成,慕课约30个学时,由基本概念、基本结构(线性、树、图)和基本技术(查找、排序)三大部分组成。基本概念部分重点讲述数据结构定义、内容、方法、评价以及前续基础与课程要求,明确数据结构是什么、学什么、怎么学数据结构。基本结构部分重点讲述线性结构、树、图的逻辑结构、存储结构及其加工处理基本算法。基本技术部分包括查找和排序两类经典技术,贯穿了参数传递、指针处理技术、数组应用、递归与队列等重要的程序设计技术;力求表现经典算法思路,为学习者继续展拓提供线索。M课视频每讲均附有小结,每章均有典型题例,便于总结提高。

2.课程特点

《数据结构与算法》的学习过程是进行复杂程序设计的训练过程。技能培养的重要程度不亚于知识传授。难点在于让学生理解、习惯、掌握构造思维算法方式。针对《数据结构与算法》技术性与综合性较突出的特点,实施了“指导—大运动量实践—反馈”教学法。通过作业练习、课堂练习、课程实习、课程设计实践过程,促进了学生逻辑抽象能力的培养。

3.资源特色

建设了支撑教学过程与自主学习两个面向的立体化教学资源,配备多媒体课件、讲义、书中各算法的实现代码及动画演示等资源支撑教学过程。

面向教学过程资源:与课程内容特点相适应的多媒体课件。以动画展现算法的实现过程,便于对抽象算法本质的理解。

面向自主学习扩展的教学资源:涵盖练习测试、同步训练、教学大纲、课堂视频、参考文献、ACM训练等教学资源,促进学生线上线下主动学习,入门提高。

让我们一起进入《数据结构与算法》课程的学习,共同提高计算思维能力。

通过典型数据结构和算法的学习,以及算法设计和实现的训练,养成敏锐的洞察力。并逐步掌握如何整合信息,提炼数据和数据结构,配置相应的运算和处理算法,完成信息化系统的集成。培养“站在计算机角度”思维的意识和建模能力、解模技巧,达到“传承知识、开发智力、培养能力、提高素质”的目的。

如果预修“离散数学”,对计算机处理离散结构的基本理论和方法有较为系统的理解,则对更扎实地掌握本课程内容有很大帮助,但并不是必须的。

这门课的一个重要目的是,帮助大家明白一些经典的数据结构为什么存在、以及在什么情况下可以最好地解决什么样的问题。要做到这一点,非自己动手解决问题不可。

课程过半时,我们将安排一次期中考试,是在线完成的选择、是非或填空题,不包括编程题。期中考试在两周内完成均有效。

最后,在期末后一周,我们会安排一次在线期末考试,需要在某一天内用连续的120分钟完成。

本课程获得证书的资格,由以下因素决定:

此外,若你的期末考试成绩高于期中考试或者无期中成绩,则期末占100%;若你的期末考试成绩低于期中考试,则期中考试占40%,期末考试占60%。

满足条件1并且总评成绩达到60分及以上者,可以获得本课程的合格证书。

1.《数据结构》(C语言版),严蔚敏吴伟民编著,清华大学出版社,2016年1月

2.《数据结构题集》,严蔚敏吴伟民米宁编著,清华大学出版社,2015年11月

3.《数据结构》(第2版),陈越、何钦铭、徐镜春、魏宝刚、杨枨编著,高等教育出版社,2016年6月

4.《数据结构》(C语言描述(第2版)),耿国华等,高等教育出版社,2015.7

5.《大话数据结构》,程杰,清华大学出版社,2011.6

6.课程练习网站:

Q1:本课程的选课条件是什么?

A:本课程的主要对象是大学本、专科生,但不限于大学生。只要你是计算机编程爱好者、具有基本的C语言程序设计基础,有热情,有决心,就能学好。

Q2:我没有学过C语言,但学过Java、C#或者Python等语言,是否可以选学本课程?

A:Java、C#或者Python等语言的编程思路和C/C++语言是相通的,尽管本课程是主要采用C语言描述算法,但你采用Java、C#或者Python等语言描述算法完全是可以的。

Q3:你的数据结构与算法课程为什么说采用C/C++语言来描述算法?

A:本课程的算法主要采用C语言面向过程方式来描述的。由于纯C语言中调用函数时,只有实参到形参的单向值传递,算法设计不方便简洁,而C++语言中提供了引用运算符(&)可以方便地实现实参和形参的双向传递。这里说采用C/C++语言来描述算法,实际上仅仅使用了C++语言中的引用运算符,其他都是采用纯C语言的知识。

Q4:你的数据结构与算法课程为什么不采用C++面向对象方法来描述算法?

A:采用C++面向对象方法可以更加完美地描述算法,但考虑到绝大部分在校学生学习数据结构与算法课程时,仅仅学习过C语言,还没有学习过C++面向对象程序设计,所以本课程主要采用C语言面向过程方式来描述算法。

Q5:数据结构与算法课程的上机实验采用什么编译器?

A:如果采用C/C++语言描述算法,可以采用VisualC++6.0、DevC++、BorlandC++或者VisualStudio.NET等C/C++语言编译器上机实验。由于算法中采用引用运算符(&),所以不适合采用TurboC2.0(或者更低版本)编译器,除非你将算法采用标准C语言描述,不使用引用运算符(&)。

Q6:数据结构与算法课程和算法设计与分析课程有什么不同和联系?

A:数据结构与算法课程主要学习各种数据结构,其算法设计是围绕各种数据结构展开的。而算法设计与分析课程学习更通用的算法设计方法,即算法策略,如动态规划、贪心法和分支限界法等。

Q7:数据结构与算法课程中讲解哪些数据结构?

A:数据结构课程中讲解的数据结构从逻辑结构上分为线性结构、树形结构和图三类。线性结构包括线性表、栈和队列等,树形结构包括树和二叉树等。

Q8:数据结构中的算法为什么需要用计算机语言描述出来?

A:从理论上讲,算法可以用自然语言、伪码和计算机语言来描述。但一个学习计算机的学生,应该熟练使用计算机语言(如C/C++)来描述算法。从而才能够从计算机的角度来求解问题。

Q9:如何学好数据结构与算法课程?

A:老师传授给你的是知识,而解决问题需要能力,能力是个性化的,只有通过自已的实训才能得到。对于一个对计算机编程感兴趣的学生,只有编写和调试n多的程序,才能获得程序设计的能力,继而具备初步的软件设计和开发基础。只想听几堂课而不进行大量课外研习和上机实践就想获取这种“能力”是不可能的。

THE END
1.数据结构基础Coursera数据结构基础 关于 结果 单元 推荐 评价 What will I get if I subscribe to this Specialization? When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to yourhttps://www.coursera.org/learn/shuju-jiegou-suanfa
2.算法与数据结构详解3.4.时间复杂度与空间复杂度的取舍问题 四、 算法分析 一、 什么是算法和数据结构 你可能会在一些教材上看到这句话:程序 = 算法 + 数据结构 1. 算法 算法(Algorithm):是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规模的输入https://blog.csdn.net/m0_46090675/article/details/111185194
3.算法与数据结构课程编号 214.04501 课程名称 算法与数据结构 任课老师 徐塞虹 杨俊 姚文斌 张成文 课程类型 选修/非学位课 课程阶段 本科 学时学分 68学时4学分 基本要求 学会分析研究计算机处理的数据对象的特性,从而选择适当的数据https://scs.bupt.edu.cn/info/1084/1324.htm
4.算法与数据结构图解.pdf文档全文免费阅读在线看算法与数据结构图解.pdf 43页内容提供方:cai 大小:265.49 KB 字数:约1.36万字 发布时间:2016-02-24发布于江西 浏览人气:325 下载次数:仅上传者可见 收藏次数:0 需要金币:*** 金币 (10金币=人民币1元)算法与数据结构图解.pdf 关闭预览 想预览更多内容,点击免费在线预览全文 免费在线预览全文 算法https://m.book118.com/html/2016/0222/35543321.shtm
5.算法与数据结构01(数据结构篇)——逻辑结构与存储结构官方定义:数据结构(英语:datastructure)是计算机中存储、组织数据的方式。 数据的组织形式,数据元素之间存在的一种或多种特定关系的数据元素集合 通俗地讲,数据结构 = 存储结构 + 逻辑结构。 1.1 基本概念 数据对象: 性质相同的数据元素的集合,是数据的一个子集 https://www.jianshu.com/p/8f8b37689ea0
6.《数据结构与算法》课件《数据结构与算法 》课件 《数据结构与算法》PPT课件 ?数据结构概述?常见数据结构?算法概述?常见算法实现?数据结构与算法的应用 目录 01 数据结构概述 数据结构的定义 总结词 简述数据结构的定义 详细描述 数据结构是数据的组织形式,它定义了数据之间的相互关系和作用。数据结构是计算机科学中的基本概念,https://wenku.baidu.com/view/817f1ee31db91a37f111f18583d049649b660e9d.html
7.什么是数据结构?什么是算法?怎么学习数据结构与算法?学习算法,我们不需要死记硬背那些冗长复杂的背景知识、底层原理、指令语法……需要做的是领悟算法思想、理解算法对内存空间和性能的影响,以及开动脑筋去寻求解决问题的最佳方案。相比编程领域的其他技术,算法更纯粹,更接近数学,也更具有趣味性。 本文将回顾数据结构与算法的基础知识,学习日常所接触场景中的一些算法和策https://maimai.cn/article/detail?fid=1744039689&efid=u2sSJyH6RePBrCh7o1dCfA
8.数据结构与算法(一):概述简介:数据结构与算法(一):概述 一、数据结构 1、定义 数据结构是计算机存储、组织数据的方式。在现实世界中,不同数据元素之间不是独立的,而是存在特定关系的,我们将这些关系称为结构。同样在计算机中,数据元素也不是孤立、杂乱无序的,而是具有内在联系的数据集合。 https://developer.aliyun.com/article/1213753
9.数据结构与算法分析(豆瓣)本书是《Data Structures and Algorithm Analysis in C》一书第2版的简体中译本。原书曾被评为20世纪顶尖的30部计算机著作之一,作者Mark Allen Weiss在数据结构和算法分析方面卓有建树,他的数据结构和算法分析的著作尤其畅销,并受到广泛好评.已被世界500余所大学用作教材。 https://book.douban.com/subject/1139426/
10.c中的数据结构与算法c语言数据结构与算法数据结构和算法是C语言的主要内容,更特别在于C语言的数据结构和算法一般需要自己实现,与OOP语言不同,C标准库中没有提供相关的数据结构。Linux C标准库原为Linux Libc,现在常用的是GLibc,即GNU C Library,另外可用的库还有GTK的库Glib,POSIX标准库Gnulib,其中Glib中提供有完整的数据结构和相关算法操作。本文详细讨论Chttps://blog.51cto.com/u_13527/6429953
11.数据结构与算法(中文版)PDF扫描版[48M]电子书下载《数据结构与算法》涉及计算机中数据的组织、重组、移动、使用和提取等操作方法,及相关的数学分析。《数据结构与算法》所选的主题基于以下几个朴素的原则。第一,本书只讲解实用的技术,而忽略一些理论上非常虽然出色、但不太实用的算法。第二,本书既包含经典的方法,也包括最近发现的方法;这种选择是基于内在的简便性、https://www.jb51.net/books/92231.html
12.程序=数据结构+算法《禅与计算机程序设计艺术》/陈光剑“数据结构和算法是过去 50 年来最重要的发明之一,它们是软件工程师需要了解的基础工具。”《Think Data Structures: Algorithms and Information Retrieval inJava》(Allen B.Downey) 基本数据类型 道生一,一生二,二生三,三生万物。 在计算机程序设计的世界里,先有基本数据类型,复合组装成复杂对象类型,不同对象之间https://cloud.tencent.com/developer/article/1815180