美文网首页
数据结构---C语言基础

数据结构---C语言基础

作者: 喜忧参半 | 来源:发表于2021-07-28 17:35 被阅读0次

一、基本知识

计算机科学 早期定义为:研究算法的科学
计算机科学 近期定义为:研究数据的科学

程序=算法+数据结构
数据结构是设计OS、DBMS、编译等系统程序和各种应用程序的重要基础。
常见的数据结构有:数组、栈、队列、表、串、树、图和文件等。
数据是什么?
①杂乱的数据不能表达和交流信息
②数据之间是有联系的
③数据之间是有结构的;
④在某种数据的结构上可以定义一组运算
程序设计的基本要素:

  • 数据的各种逻辑结构和物理结构,以及它们之间的相应关系
  • 并对每种结构定义相适应的各种运算
  • 设计出相应的算法
  • 分析算法的效率

二、数据结构

数据(Date):所有能被计算机处理的符号的集合。
数据元素(Data Element):数据这个集合中的单个个体。
数据项(Data Item):数据元素常常被分为若干个数据项,数据项是数据具有意义的最小单位。
数据对象(Data Object):具有相同特性的数据元素的集合。


数据结构(Data Structure):是带有结构的数据元素的集合。
逻辑结构(Logical Structure):指数据元素之间的结构关系。
物理结构(Physical Structure):指数据结构在计算机内存中的表示。
物理结构的存放直接决定了逻辑结构的选择。

三、算法分析

什么是算法
算法是一个有限的指令集,遵循指令流可以完成特定的功能。
算法的基本特性:

特性 解释
有穷性 算法经有限步后结束
确定性 下一步必须是明确的
可行性 每一步是可执行的

如何衡量一个正确算法的好坏?
算法与程序的区别

  • 算法是解决问题的一种方法或一个过程,考虑如何将输入转换成输出,一个问题可以有多种算法。
  • 程序是用某种程序设计语言对算法的具体实现。

主要区别在:有穷性、正确性和描述方法
程序可以是无穷的,例如OS。
算法是有穷的;程序可以是错误的,算法必须是正确的;
程序是用程序设计语言描述,在机器上可以执行;
算法还可以用框图、自然语言等方式描述。


衡量的三个标准:
运行所花费的时间(算法的时间特性);
所占用存储空间的大小(算法的空间特性);
其他(可读性、易调性、健壮性、可移植性等)
时间和空间特性的巨大改进源于更好的数据结构或算法。

  • 语句频度(Frequency Count)
    语句可能重复执行的最大次数
  • 时间复杂度(Time Complexity)
    设算法中所有语句的语句频度为t(n),
    f(n)是当n趋近于无穷大时与t(n)为同阶无穷大,
    则算法的时间复杂度T(n)=O(f(n))(总是考虑最坏情况)
    其中:n为算法计算量或称为规模(size);
    f(n)是运算时间随n增大时的增长率;
    O(f(n))是算法时间特性的量度。

为什么要计算时间复杂度?
设:A1,A2和A3是求解同一问题的不同算法,其时间复杂度分别为:O(n), O(nlogn), O(N!)。
C1和C2为计算机,且C2的计算速度是C1的10倍。

复杂度 C1执行时间 C2执行时间 执行时间的关系
O(n) N11 N21 N21 = 10*N11
O(nlogn) N12 N22 N22=10*N12
O(N!) N13 N23 N23=N13+小常数

不必追求高效算法,低效算法可由高速计算机来弥补的看法,是错误的。

相关文章

  • 开工

    能力地图 基础技术能力 架构能力 项目管理能力 基础技术能力 基础技术,如数据结构、算法 编程语言,如c/c++/...

  • 怎么进入游戏开发领域?

    先学好一门基础的编程开发语言,掌握基本的数据结构与常用的算法,比如C/C++,C/C++与数据结构,比如Java与...

  • Audio Queue录制 播放原理

    阅读前提: C语言基础 音视频基础 Core Audio基本数据结构 Audio Session Audio Qu...

  • 阶段02#大三·下

    A 书籍 C程序设计语言 Java学习指南 C++语言基础教程 数据结构与算法分析 算法设计与分析基础 计算机网络...

  • 数据结构与算法-目录

    数据结构与算法-目录 C语言篇 数据结构和算法-C语言篇1-绪论数据结构和算法-C语言篇2-初识算法数据结构与算法...

  • 如何学习数据结构与算法

    算法学习经验 推荐: 入门: 数据结构启蒙:《数据结构与算法分析——C 语言描述》 算法启蒙:《算法设计与分析基础...

  • 大总结:c及c++设计基础复习--Apple的学习笔记

    每年总会安排时间进行基础复习,这次关注的是c语言数据结构设计及c++设计模式。 将c语言采用了面向对象的设计方法,...

  • 单向链表

    什么数据结构最优美,有人回答是数组。诚然,数组是很多数据结构的基础,就好比C语言在语言中的地位。但是当你做WEB开...

  • 一名还在编程的中年少女

    我大学专业是网络工程,课程大概就是基础学科高数、概率统计、线性代数、英语,还有基础的编程语言C,C++,数据结构,...

  • PHP 学习

    基础 C 程序设计语言 C 语言数据结构和算法 深入理解计算机系统 现代操作系统 Unix 环境高级编程 linu...

网友评论

      本文标题:数据结构---C语言基础

      本文链接:https://www.haomeiwen.com/subject/ccbzmltx.html