认识数据结构和算法
2019-08-19 本文已影响0人
iDevOps
程序 = 数据结构 + 算法
数据结构
- 数据结构是一门研究组织数据方式的学科, 学好数据结构可以编写出更漂亮、更有效率的代码
- 数据结构是算法的基础, 要想学好算法, 先学好数据结构
- 数据结构包括线性结构和非线性结构
- 线性数据结构
1.数据元素之间存在一对一的线性关系
2.线性结构有两种不同的存储结构, 顺序存储结构(数组、队列和栈)和链式存储结构(链表) - 非线性数据结构
比如多维数组、广义表、树结构和图结构
算法
- 算法是程序的灵魂, 优秀的程序可以在海量数据计算时, 依然保持高速计算
- 现在面试门槛越来越高, 高级程序员必面
看几个经典的算法面试题
- 字符串匹配问题
有一个字符串s1 = "看几个经典的算法面试题"和一个子串s2 = "算法",现在判断s1是否包含s2, 包含就返回第一次出现的位置, 不包含就返回-1, 请使用最快的速度完成查找。
大部分人首先想到的是暴力匹配,逐个去对比,这种方式虽然简单,但是效率极低。
哪有没有什么好的算法呢? (提示: KMP算法) -
汉诺塔游戏
将A塔的所有圆盘移动到C盘,要求小盘不能放到大盘上,一次只能移动一个盘子。
汉诺塔游戏 -
八皇后问题
八皇后问题是一个古老而著名的问题,是回溯算法的经典案例。这个问题是由国际西洋棋棋手马克斯*贝瑟儿于1848年提出,在8乘8的国际象棋盘上摆放八个皇后,使其不能相互攻击(就是任意两个皇后不能在同一行、同一列或同一斜线上),问有多少种摆法? (提示: 分治算法)
8皇后游戏 -
马踏棋盘
将马放在国际象棋8*8棋盘中的某个方格内,马走日进行移动,要求每个方格只能进一次,走遍棋盘64个方格。(提示: 会使用到图的深度优先遍历算法DFS + 贪心算法)
马踏棋盘
上面的问题你都会了吗? 没的话就继续往下学习吧。