1、前言
数据结构学习路线:
1.1 什么是算法
简单来说,算法就是解决问题的一系列方法。
在计算机领域,算法是一系列程序指令,用于处理特定的运算和逻辑问题。
算法分类:
- 基础算法
- 搜索算法(深度优先搜索(DFS)、广度优先搜索(BFS)、二分搜索等)
- 排序算法(冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等)
- 图算法(Dijkstra算法、Floyd算法、最小生成树算法等)
- 动态规划算法(背包问题,最长公共子序列等)
- 分治算法(快速排序、归并排序、大整数乘法等)
- 贪心算法(霍夫曼编码)
- 回溯算法(皇后问题,数独问题等)
- 专业领域算法
- 服务于特定领域,如阿尔法狗战胜围棋冠军,背后就是人工智能算法。
衡量算法优劣的主要标准是时间复杂度和空间复杂度。
- 时间复杂度:一个算法运行时间长短的量度,T(n)=O(f(n)).
- 空间复杂度:一个算法在运行过程中临时占用存储空间大小的量度,S(n)=O(f(n)).
1.2 什么是数据结构
数据结构(data structure)是数据的组织、管理和存储格式,其使用目的是为了高效的访问和修改数据。
常见的数据结构:
- 线性数据结构(数组、链表、以及从它们所衍生出来的栈、队列)
- 树结构(二叉树:红黑树、AVL树,非二叉树:一般文件系统所使用的B-树,关系型数据库使用的索引结构B+树,用于数据压缩的哈夫曼树)
- 图结构
- 复合数据结构(哈希表、跳表、线段树、哈希链表)
目前在跟程序员小灰一起学算法,欢迎感兴趣的朋友们来一块学!!!