程序员必备——数据结构入门

简介: 数据结构是计算机存储、组织数据的方式。在这篇笔记中,记录了常见的线性表、栈与队列、树、图、排序和查找算法等知识点,精心选择这些数据结构可以带来更高的程序运行效率。

前言:数据结构与算法作为计算机经典的基础理论课程,同时作为计算机类专业考研课程,并且在校招面试时常被提及,其重要性可见一斑。除此之外,学习这门课程有助于我们用编程去解决、思考问题,设计出更简洁、效率更高的代码。

一.课程概述

  • 数据结构课程研究什么?

    • 内存中基本数据组织和数据处理的方法
    • 非数值问题
  • 通过学习数据结构获得什么?

    • 经典数据结构和经典算法的基本原理
  • 学习重点

    • 数据结构的逻辑特性和存储结构设计
    • 数据结构算法设计基本方法和分析方法
    • 利用数据结构解决实际问题

二.基本概念与术语

  • 数据

    • 能输入到计算机中,被程序识别和处理的一切事物的符号化表示
  • 数据元素

    • 数据的基本单位
  • 数据项

    • 构成数据元素的最小单位
  • 存储结构(由想法到算法)

    • 顺序存储结构
    • 链式存储结构
  • 逻辑结构(由问题到想法)

    • 一种逻辑结构可由多种存储结构实现
  • 数据结构

    • 逻辑结构
    • 存储结构
    • 数据运算
  • 抽象数据类型(ADT)

    ADT 抽象数据类型名{
        数据对象的定义
        数据元素之间的逻辑关系定义
        基本运算定义
    }ADT
  • 算法的定义

    • 基于存储结构的运算实现的步骤
    • 满足有穷性确定性可行性
    • 有0个或多个输入,1个或多个输出
  • 什么是好的算法

    • 正确性:对于合法输入,算法能得出正确结果
    • 健壮性:对于非法输入,算法能做出特别处理
    • 可理解性:算法容易理解、实现
    • 高效性:具有较短执行时间并占用较少空间
    • 可修改、可拓展性

三.算法分析

  • 时间复杂度

    • 是算法求解问题规模n的函数,T(n)=F(n),F(n)是基本语句的执行频度
    • 增长率:忽略低次幂和最高次幂系数
  • 分析规则

    • 加法规则:针对并列程序段
    • 乘法规则:针对嵌套程序段
  • 例子

  • 常见的时间复杂度

    O(1)<(log2n)<(n)<(nlog2n)<(n²)<...<(2的n次方)<(n!)
  • 空间复杂度

    • 除去输入输出占用空间,算法临时占用的存储空间
    • S(n)=O(f(n))

完整内容可以访问我的个人博客:数据结构 515code.com

目录
相关文章
|
24天前
|
存储 机器学习/深度学习 算法
探索数据结构:入门及复杂度的解锁
探索数据结构:入门及复杂度的解锁
|
30天前
|
存储 缓存 应用服务中间件
Nginx入门 -- 基本数据结构中之ngx_hash_t
Nginx入门 -- 基本数据结构中之ngx_hash_t
34 0
|
30天前
|
存储 缓存 应用服务中间件
Nginx入门 -- 基本数据结构中之ngx_list_t,ngx_queue_t
Nginx入门 -- 基本数据结构中之ngx_list_t,ngx_queue_t
17 0
|
30天前
|
存储 应用服务中间件 nginx
Nginx入门 -- 基本数据结构中之ngx_str_t,ngx_array_t
Nginx入门 -- 基本数据结构中之ngx_str_t,ngx_array_t
50 0
|
3月前
|
应用服务中间件 nginx C语言
Nginx入门 -- 基本数据结构中之ngx_str_t,ngx_array_t
这两种数据结构是Nginx自定义数据类型的例子,它们证明了Nginx设计者在构建一个为高并发和高性能优化的web服务器时的精确和高效。理解这些数据结构是深入学习Nginx内部机制的基础,同时也是扩展和开发Nginx模块不可或缺的一部分知识。
36 1
|
4月前
|
算法 数据挖掘 计算机视觉
Python并查集实战宝典:从入门到精通,让你的数据结构技能无懈可击!
【7月更文挑战第17天】并查集,如同瑞士军刀,是解决元素分组问题的利器,应用于好友关系、像素聚类、碰撞检测和连通性分析等场景。本文从基础到实战,介绍并查集的初始化、查找与路径压缩、按秩合并,以及在Kruskal算法中的应用。通过并查集,实现高效动态集合操作,对比哈希表和平衡树,其在合并与查找上的性能尤为突出。学习并查集,提升算法解决复杂问题的能力。
77 5
|
3月前
|
存储 算法 调度
10种 Python数据结构,从入门到精通
10种 Python数据结构,从入门到精通
49 0
|
5月前
|
存储 算法 Java
老程序员分享:java之数据结构【入门篇】
老程序员分享:java之数据结构【入门篇】
35 0
|
5月前
|
存储 安全 Java
Go语言入门之路——数据结构
Go语言入门之路——数据结构
123 0
|
5月前
|
机器学习/深度学习 算法
数据结构入门 时间 空间复杂度解析
数据结构入门 时间 空间复杂度解析
31 0