📔
数据结构简单学
  • 序言
  • 绪论
    • 数据结构基本概念
    • 算法基本概念
  • 线性表
    • 顺序表
    • 单链表
    • 双链表
    • 循环链表
    • 区别
  • 栈和队列
    • 栈
    • 队列
    • 应用
  • 数组
  • 字符串
  • 哈希表
  • 树和二叉树
    • 基本概念
    • 二叉树遍历与构造
    • 线索二叉树
    • 树、森林
    • 二叉排序树
    • 平衡二叉树
    • 哈夫曼树
  • 图
    • 基本概念
    • 图的存储及基本操作
    • 图的遍历
    • 图的应用
  • 查找算法
  • 排序算法
    • 冒泡排序
    • 简单选择排序
    • 简单插入排序
    • 希尔排序
    • 归并排序
    • 快速排序
    • 堆排序
  • STL系列
    • 基础知识
    • Vector 动态数组
    • List 链表
    • Stack 栈
    • Queue 队列
    • Set 集合
    • Map
  • 总结与展望
Powered by GitBook
On this page
  • 5个特性:
  • 评价算法的优劣:

Was this helpful?

  1. 绪论

算法基本概念

5个特性:

  1)有穷性

  2)确定性

  3)可行性

  4)输入

  5)输出

评价算法的优劣:

  1)时间复杂度

  它定性描述算法的运行时间。一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)。

  时间复杂度又分为:最坏时间复杂度,平均时间复杂度,最好时间复杂度。

    最坏时间复杂度是指最坏情况下,算法的时间复杂度。

    平均时间复杂度是指所有输入实力在等概率出现的情况下,算法的期望运行时间。

    最好时间复杂度是指最好情况下,算法的时间复杂度。

  算法时间复杂度应该不难求解吧。

如果循环主体中的变量参与循环条件的判断,这时候计算循环体里面的操作次数,得出时间复杂度。

如果循环主体中的变量与循环条件无关,就采用数学归纳法或间接累计循环次数。

可能觉得有点模糊,不如做两道题,自然茅舍顿开。

  常见的渐进时间复杂度为:

O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)O(1) < O(log2n) < O(n) < O(nlog2n) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

  2)空间复杂度

  空间复杂度S(n) 就是该算法所耗费的存储空间,是一个问题规模n的函数。这里有一点要注意,就是算法原地工作是指算法所需的辅助空间为常量,即O(1)。

Previous数据结构基本概念Next线性表

Last updated 4 years ago

Was this helpful?