数据结构与算法-绪论

本贴最后更新于 3013 天前,其中的信息可能已经事过景迁

前言

    程序设计 = 数据结构+算法,如果不想当只会调API的行尸走肉,数据结构和算法就是必修课!

什么是数据结构

    数据结构就是数据元素之间存在的一种或多种关系的集合,传统上把数据结构分为物理结构和逻辑结构。

  • 逻辑结构:指数据元素相互之间的关系。
  • 物理结构:指数据的逻辑结构在计算机中的存储形式,实际上研究的就是如何把数据元素存储到计算机的存储器中,存储器一般指内存,硬盘之内的外部存储器一般用文件结构描述

    数据元素的存储结构形式有两种,顺序存储和链式存储。

  • 顺序存储结构:把数据元素存储到地址连续的存储单元里,数据的逻辑关系和存储关系是一致的。
  • 链式存储结构:把数据元素存储到任意位置的存储单元里,可以是连续的也可以不连续

什么是算法

  • 算法是解决特定问题求解步骤的描述,在计算机中体现为指令的有限序列,并且每条指令表示一个或多个操作,或者是就是你泡妞的技巧和方式

     算法具有五个基本特征:

  • 输入
  • 输出
  • 有穷性
  • 确定性
  • 可行性

     算法设计有要求:

  • 正确性
  • 可读性
  • 健壮性
  • 时间效率高,存储量低

    算法效率度量方法:

  • 判断一个算法效率时,函数中的常量和次要项常常可以忽略,而更应该关注主项的阶数
  • 输入的数据量要大

    算法时间复杂度:执行次数等于时间,用O()表示时间复杂度

  • 用1取代运行时间中所有加法常数
  • 运行次数函数存在最高项,只保留最高阶项
  • 最高阶项存在且不是1,去除和最高阶项相乘的常数
  • 最后结果就是大O阶

   常见的时间复杂度,按从小到大排序,有O(1)常数阶,O(log(2)n)对数阶,O(n)线性阶,O(nlog(2)n)nlogn阶,O(n^2)平方阶,O(n^3)立方阶,O(2^n),O(n!),O(n^n)

    算法空间复杂度:写代码可以用空间换时间,时间复杂度更符合算法潮流。

 

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...