博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法与数据结构概述
阅读量:4070 次
发布时间:2019-05-25

本文共 1117 字,大约阅读时间需要 3 分钟。

目录


1. 算法的定义

  当设计一个算法时,需要考虑下下面三点:

  * 明确要实现的目标是什么
  * 分析它的正确性
  * 分析它的效率(时间,内存消耗)

2. 算法度量Big O

  "On the basis of the issues discussed here, I propose that members of SIGACT, and editors of computer science and mathematics journals, adopt O, Ω, and Θ notations as defined above, unless a better alternative can be found reasonable soon."

  -D.E. Knuth, "Big Omicron and Big Omega and Big Theta", SIGACT News, 1976. Reprinted in "Selected Papers on Analysis of Algorithms."
  * T(n) = O(f(n)) (读作big-oh),表示T(n)的增长率渐近的小于或者等于f(n)的增长率。
  * T(n) = Ω(f(n)) (读作omega),表示T(n)的增长率渐近的大于或者等于f(n)的增长率。
  * T(n) = Θ(f(n)) (读作theta),表示T(n)的增长率渐近的等于f(n)的增长率。
  因此,如果T(n) = n^2 + 5n,则下面的判断为true.
     T(n) = Ω(n)
     T(n) = Θ(n^2)
     T(n) = O(n^3)
  简单来说,这三个符号表示:
  Big O --- 算法最坏情况的度量;
  Big Omega - 算法最好情况的度量;
  Big Theta - 算法的区间,不会好于某某,也不会坏于某某。

3. 数据结构

  为何数据结构这么重要?因为我们需要优化数据使得能更快的访问以及使用。数据结构有多种形式,因为需要支持不同的操作。换言之,每种数据结构适用于不同类型的任务。常用的数据结构类型如下:

  链表(Linked Lists)
  栈(Stacks)和队列(Queues)
  二叉搜索树(Binary Search Trees)
  B树(B-Trees)
  红黑树(Red-Black Trees)
  平衡二叉树(AVL Trees)
  哈希表(Hash Tables)
  堆(Heap)
  后面的几个章节,会分别对每种类型进行说明。

4. 排序算法

  n:  需要排序的元素个数

  k: 每个key的大小
  d: 位数大小
  
  以上的这几种排序算法,会在后续的文章中逐渐说明。

 

你可能感兴趣的文章
《软件体系结构》 练习题
查看>>
《数据库系统概论》 第一章 绪论
查看>>
《数据库系统概论》 第二章 关系数据库
查看>>
《数据库系统概论》 第三章 关系数据库标准语言SQL
查看>>
SQL语句(二)查询语句
查看>>
SQL语句(六) 自主存取控制
查看>>
《计算机网络》第五章 运输层 ——TCP和UDP 可靠传输原理 TCP流量控制 拥塞控制 连接管理
查看>>
堆排序完整版,含注释
查看>>
二叉树深度优先遍历和广度优先遍历
查看>>
生产者消费者模型,循环队列实现
查看>>
PostgreSQL代码分析,查询优化部分,process_duplicate_ors
查看>>
PostgreSQL代码分析,查询优化部分,canonicalize_qual
查看>>
PostgreSQL代码分析,查询优化部分,pull_ands()和pull_ors()
查看>>
ORACLE权限管理调研笔记
查看>>
移进规约冲突一例
查看>>
IA32时钟周期的一些内容
查看>>
SM2椭圆曲线公钥密码算法
查看>>
获得github工程中的一个文件夹的方法
查看>>
《PostgreSQL技术内幕:查询优化深度探索》养成记
查看>>
PostgreSQL查询优化器详解之逻辑优化篇
查看>>