• 算法与数据结构的介绍


    数据结构和算法

    • CMDB项目 (****)
    • 数据分析
    • 数据结构和算法 (****)
    数据结构和算法地位:
    • 操作系统
    • 计算机组成原理
    • 网络系统
    • 软件工程
    • 数据结构和算法 (考研必考)

    数据结构和算法是计算结科学领域非常核心的一门课程。
    程序 = 数据结构 + 算法

    学习时长

    • 算法
      • 排序算法
        • 冒泡排序 (**)
        • 选择排序
        • 插入排序
        • 快速排序 (**)
        • 希尔排序
        • 计数排序
      • 查找
        • 顺序查找
        • 二分查找 (**)
    • 数据结构
      • 线性结构
        • 数组 (列表)
        • 链表 (约瑟夫,丢手绢问题)
        • 线性结构的应用
          • 队列
      • 非线性结构
          • 一般树
            • B+树
          • 二叉树
            • 完全二叉树
            • 满二叉树
          • 森林
          • mysql的索引:B+树 不是二叉树
          • 图论

    总结:这两天的内容,你学完之后,做出有用的东西。主要学习的是思考的问题的方式,方法。就像练功的人练内功一样。内功不好 ,学其他的东西非常的费劲。如果听不懂的话,很正常。但是大家千万不要放弃,每天要不断的去思考,说不定哪一天就像明白了。

    算法衡量的标准

    1.时间复杂度,重点

    问: 比如说,现在有两个程序,这两个程序的运行时间如何衡量?
    答:用time模块判断,time.time() 来进行计算

    上述的计算方式,前提是:两段程序必须运行在同一个硬件相同(CPU,内存)的环境下运行,才有意义。

    因此,我们使用时间差的方式来衡量一个程序是否快慢没有任何的意义。所以,使用程序执行的大概次数来衡量程序的执行快慢,把这种衡量的方式称之为时间复杂度,使用O()来记

    如何一眼判断时间复杂度?

    • 循环减半的过程O(logn)
    • 几次循环就是n的几次方的复杂度

    2.空间复杂度

    这段程序运行的过程中,是否占用了内存空间。
    微博,用redis。196G内存

    常见的排序算法

    • 算法
      • 排序算法
        • 冒泡排序 (**)
        • 选择排序
        • 插入排序
        • 快速排序 (**)
        • 希尔排序
        • 桶排序 ---》 计数排序
        • 动态规划 贪心(分糖果,人民币问题) 背包问题
      • 查找
        • 顺序查找
        • 二分查找 (**)

    博客地址:

    http://lupython.gitee.io/
    https://visualgo.net/zh

    数据结构

    • 线性结构

      就是能够用一根线串起来的数据结构

      • 数组 (列表)
        • 问:申请数组的前提条件是啥? a[12]?内存需要满足的条件?
        • 答:内存必须有一块连续的内存空间
        • int a[7] : 声明一个数组,这个数组的数组名是 a, 数组的大小是 7, 数组元素的类型是整型。 int a[7] = array(1,2,3,4,5,6,7)
        • 问:如何申请内存?
        • 答:C,C++语言,申请:mallco (28)。释放:free(28)
        • 问:int a[7] = [1,2,3,4,5,6,7] a[3] = 4?
        • 答:a[3] = 首地址(1000) + 索引(3) * 类型长度(4) = 1012 --- 1015
        • 问:数组首地址从哪获取?
        • 答:数组首地址保存在数组名中
        • 列表中的增(append)删(pop)改(update)查(for)
      • 链表 (约瑟夫,丢手绢问题)
      • 线性结构的应用
        • 队列
    • 非线性结构

        • 一般树
          • B+树
        • 二叉树
          • 完全二叉树
          • 满二叉树
        • 森林
  • 相关阅读:
    力扣
    linux网卡知识
    opencv C++ Mat构造函数
    C++ vector迭代器访问二维数组
    opencv Scalar
    C++智能指针
    c++结构体
    C++ 公有继承、保护继承和私有继承的对比
    乌班图设置C++11
    C++类模板的使用
  • 原文地址:https://www.cnblogs.com/yafeng666/p/12663769.html
Copyright © 2020-2023  润新知