数据结构与算法开篇-00

在家已经看了几本数据结构与算法书了,但是之前都是为考研做准备而且从类没有实现过一次代码.所以这篇博客就是作为记录自己算法实现的一个开端. 依据设计模式依赖倒转原则,这里先写下后面要实现的几个数据结构,后期每个数据结构都以随想形式链接到此处. 内容大概按严蔚敏数据结构中的大纲顺序依次实现.

算法的几个特性和要求

算法的五个特性

1. 有穷性:一个算法的操作步骤是有限的,不能是无限的
2. 确定性:算法中的每一个步骤都要确定的词,不能含糊不清
3. 输入: 算法具有0个或多个输入
4. 输出: 算法至少有1个或多个输出
5. 可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成

算法设计的要求

1. 正确性:算法的执行结果应当满足预先规定的功能和性能要求。
2. 可读性:一个算法的设计应当思路清晰、层次分明、易读易懂。
3. 健壮性:当输入不合法的数据时,能做适当处理,避免引起严重后果。
4. 高效性:有效地使用存储空间,有高效的时间效率。

常见数据结构

线性表

  1. 线性链表
  2. 循环链表
  3. 双向链表

  1. 数组实现
  2. 链表实现

队列

  1. 链队列
  2. 循环队列

串/数组/广义表

树/二叉树

  1. 先序遍历
  2. 中序遍历
  3. 后序遍历

  • 深度优先遍历
  • 广度优先遍历
  • 单源最短路径
  • 多源最短路径

常见排序

插入排序

  1. 直接插入排序
  2. 希尔排序
  3. 其他插入排序

快速排序

选择排序

  1. 简单选择排序
  2. 树形选择排序
  3. 堆排序

归并排序

基数排序

  1. 多关键字排序
  2. 链式排序

以上并未列全, 有些数据结构的应用也是很有必要自己实现一遍的,后期上面依旧会补充.

原文地址:https://www.cnblogs.com/brandon-zhang/p/14289603.html