Qz 学算法 - 数据结构篇 (引入)
其实自己一直想写算法有关的系列,但出于时间的关系一直没有开展有关算法的学习,掘金现在正好有这个活动,那就加油写下去吧.那么这个系列就以数据结构为开篇吧
一.引入
1.经典算法面试题
字符串匹配问题 1)有一个字符串 str1 = "世界你好 你好 Java 你好 Java 你好数据结构菜鸟",和一个子串 str2 = "你好 Java" 2)现在要判断 str1 是否含有 str2,如果存在,就返回第一次出现的位置,如果没有,则返回-1 3)要求用最快的速度来完成匹配 4)你的思路是?
暴力匹配
KMP 算法<<部分匹配表>>
汉诺塔
分治算法
八皇后
回溯问题
马踏棋盘
图的深度优化遍历算法(DFS)+贪心算法优化
2.数据结构和算法的重要性
算法是程序的灵魂,优秀的程序可以在海量数据计算时,依然保持高速计算
一般来讲程序会使用了内存计算框架(比如 Spark)和缓存技术(比如 Redis 等)来优化程序,再深入的思考一下,这些计算框架和缓存技术,它的核心功能是哪个部分呢?
拿实际工作经历来说,在 Unⅸ下开发服务器程序,功能是要支持上千万人同时在线,在上线前,做内测,一切 OK 可上线后,服务器就支撑不住了,公司的 CTO 对代码进行优化,再次上线,坚如磐石。你就能感受到程序是有灵魂的,就是算法。
目前程序员面试的门槛越来越高,很多一线 IT 公司,都会有数据结构和算法面试题(负责的告诉你,肯定有的)
如果你不想永远都是代码工人,那就花时间来研究下数据结构和算法
二.数据结构和算法的介绍
1.数据结构和算法的关系
数据 data 结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了
数据结构学好数据结构可以编写出更加漂亮,更加有效率的代码。 要学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决
程序=数据结构+算法
数据结构是算法的基础,换言之,想要学好算法,需要把数据结构学到位。
所以说,要想算法好,学好数据结构是很有必要的,这要求我们要多想,多思考,在下面的基本结构中会有博主的个人思考,如果有小伙伴看了觉得有所启发,还请来个三连
版权声明: 本文为 InfoQ 作者【浅辄】的原创文章。
原文链接:【http://xie.infoq.cn/article/c4fd789b74f68f81615d8850c】。文章转载请联系作者。
评论