数据结构与算法——先导篇
很久没有更新文章了,后面准备连载一个关于《数据结构与算法》的系列教程,喜欢的同学记得分享转发。
1、第一印象
(1)复杂、深奥、难学?
一提到数据结构与算法,大家对它的第一印象就是:复杂、深奥、难学。其实,大家之所以这么认为的原因主要是没有找到正确的学习资料和学习方法。
(2)不常用?
还有一些同学认为,数据结构和算法在平时的项目开发中不常用,不懂数据结构和算法同样可以应对相应的工作。这是因为很多人“面向接口编程”、“面向百度编程”。其实,并不是工作中用不到,而是还没有达到那个层次。
我们在项目开发中很多东西都是使用第三方框架来完成的。其实,在很多第三方框架底层都大量使用了数据结构与算法。如果你能灵活掌握数据结构和算法的话,你便可以更好地去阅读这些框架的源码,也能更好地体会框架的设计思想,进而更好地去使用这些框架。
当你的用户达到一定程度(如上百万、上千万、上亿)的时候,你必然会用到数据结构与算法。
2、Why数据结构与算法?
- 名企面试必考,它考验的是一个人的技术功底和长期积累;
- 有利于写出性能更高的程序;
- 有助于快速学习新技术;
- 一次掌握,终生受益;
- 数据结构与算法功底扎实的程序员,技术实力、业务能力和自学能力一般都不会差。
Pascal之父Nicklaus Wirth凭借 “算法 + 数据结构 = 程序” 这一公式获得图灵奖(计算机领域的诺贝尔奖)。
3、Why Java?
学好数据结构与算法,与编程语言无关,最重要的是学思想、学思路。 我们既可以使用C语言,也可以使用C++、Java等编程语言具体实现。本教程使用Java进行讲解,建议使用Java8(JDK1.8)及以上版本。
为什么我们选择Java而不选择其他编程语言呢?
- C:面向过程,非面向对象,写法复杂,大量内存管理代码。
- C++:写法复杂,大量内存管理代码。
- Objective-C、Swift:需要Mac系统。
- JavaScript、Python:依赖脚本解析器,同一逻辑使用不同写法会影响代码性能,影响算法性能测评。
- Java:
- 面向对象,语法丰富严谨,我们可以将更多的精力放在业务逻辑上。
- Windows和Mac系统均可轻松搭建Java开发环境。
4、开发环境
4.1 选择开发工具
(1)Eclipse(或IntelliJ IDEA)
两者均支持Windows和Mac系统。目前,Java企业级开发中用的比较多的是IDEA,因为它的集成环境非常强大。 本教程采用的是Eclipse, 主要是因为它:
- 简洁、明了。
- 多个项目可以在同一窗口展示。
- 本教程中不会使用到后台开发的框架。
Eclipse的下载地址为:https://www.eclipse.org/downloads/
(2)JDK
- 版本不低于1.8。
JDK的下载地址为:https://www.oracle.com/java/technologies/javase-jdk8-downloads.html
4.2 搭建步骤
(1)安装JDK
a. 双击java安装包,根据提示点击下一步:
b. 设置JDK的安装路径。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dHnIGwsq-1588598017568)(http://www.atangbiji.com/2020/05/04/beforeLearningDataStructure/path.png)]
c. 处理告警信息。
由于最近JDK大版本更新比较快,2019年1月起官方停止维护1.8版本(不用担心,仍可放心使用),此时会出现如下图所示告警信息。
d. 点击“确定”按钮后,设置JRE的安装路径。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ieh2Ob2M-1588598017571)(http://www.atangbiji.com/2020/05/04/beforeLearningDataStructure/jre.png)]
注:之前文章里也说过,JRE是用于运行时的包,它是JDK的一部分。
e. 安装完成,关闭窗口。
f. 验证是否安装成功。
输入命令行java -version,若可以看到JDK的版本信息(1.8.0_181),则说明安装成功。
注:JDK 1.8及以后的版本在安装完成后会自动添加环境变量。 所以网上那些还要强调配置的文章,要么是老的JKD版本,已经过时了;要么是想当然,没有实际的安装。
(2)安装Eclipse
a. 双击Eclipse安装包,在弹出界面上选择安装包。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z0FAJ8Tp-1588598017575)(http://www.atangbiji.com/2020/05/04/beforeLearningDataStructure/eclipse.png)]
我们这里选择第一个Eclipse IDE for Java Developers。
b. 选择安装目录。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IwF8Po7I-1588598017576)(http://www.atangbiji.com/2020/05/04/beforeLearningDataStructure/eclipse_path.png)]
c. 接受用户协议。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H1SANFAK-1588598017577)(http://www.atangbiji.com/2020/05/04/beforeLearningDataStructure/agreement.png)]
d. 接受许可证。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a2O6cIaM-1588598017577)(http://www.atangbiji.com/2020/05/04/beforeLearningDataStructure/licenses.png)]
e. 接受证书。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hWqiddWA-1588598017578)(http://www.atangbiji.com/2020/05/04/beforeLearningDataStructure/certificates.png)]
f. 安装完成后,点击“启动”按钮。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-49t1t4xs-1588598017578)(http://www.atangbiji.com/2020/05/04/beforeLearningDataStructure/launch.png)]
g. 设置工作目录。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iO3lL7P3-1588598017579)(http://www.atangbiji.com/2020/05/04/beforeLearningDataStructure/directory.png)]
完成以上步骤,我们便可进入eclipse的开发界面了。
4.3 初识开发环境(大神请跳过)
(1)打开安装好的Eclipse,点击欢迎界面右上角的“Workbench”按钮进入工作台。
(2)为了方便写代码,我们打开Eclipse代码助手的自动提示功能,并将工作空间的编码方式改为“UTF-8”。具体操作步骤如下:
a. 打开 Eclipse → Window → Perferences窗口,设置Java → Editor → Content Assist属性。
Auto activation trigger for Java的默认值是一个“.”,即:只有输入“.”之后才会有代码提示,我们要修改的地方就是这里。我们只需将字符串“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.”复制并覆盖粘贴到“.”上(不要用键盘输入)即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-81uLHJuc-1588598017579)(http://www.atangbiji.com/2020/05/04/beforeLearningDataStructure/content.png)]
b. 为了方便代码移植,我们将工作空间的编码方式改为“UTF-8”。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2oYpIOmZ-1588598017580)(http://www.atangbiji.com/2020/05/04/beforeLearningDataStructure/utf_8.png)]
(3)新建一个名称为test的“Java Project”项目。
(4)再新建一个名称为Main的类。
注:为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。 包可以理解为文件夹,包名即文件夹名。 我们一般将域名反过来写作为包名。
(5)在Main类中写一个程序的入口函数:main方法。
main.java
//Java中的方法是依赖于类的,必须先有类,才能有方法public static void main(String[] args) {System.out.println("Hello Java!");}
(6)运行该程序,结果如下图所示。
(本讲完,系列博文持续更新中…… )
关注 “阿汤笔迹” 微信公众号,获取更多学习笔记。
博主最新文章在个人博客 http://www.atangbiji.com/ 发布。
数据结构与算法——先导篇相关推荐
- 数据结构与算法一篇帮助你吃下KMP算法
模式匹配 什么是模式匹配,我们用一个案例来说明: 当S = "s1,s2,s3,s4 -sn" T="t1,t2,t3,t4 - tn" 在字符串S中寻找T字符 ...
- 【浅学数据结构】算法概念篇
一.什么是算法? 算法是解决特定问题求解步骤的描述,在计算机中则表现为一个或多个指令的组合规则:常用的经典算法有:循环累加求和/高斯求和.二叉树查找.冒泡排序.散列算法查找(哈希表)等. 二.算法与数 ...
- 数据结构与算法--基础篇
目录 概念 常见的数据结构 常见的算法 算法复杂度 空间复杂度 时间复杂度 数据结构与算法基础 线性表 数组 链表 栈 队列 散列表 递归 二分查找 概念 常见的数据结构 常见的算法 算法复杂度 空间 ...
- 数据结构与算法-链表篇
链表与数组不同,是在物理空间中非连续的,依靠前一个节点记录下一个节点的地址进行连接的一种数据结构. 链表中每个节点存储的内容为当前节点和下个节点的指针. 链表一般分为三种 1.单向链表 2.双向链表 ...
- 数据结构与算法学习篇给你一个文件里面包含全国人民(14亿)的年龄数据(0~200),现在要你统计每一个年龄有多少人?
给你一个文件里面包含全国人民(14亿)的年龄数据(0~180),现在要你统计每一个年龄有多少人? 限制: 给定机器为 单台+1CPU+1G内存.不得使用现成的容器,比如map等. 假设每个年龄数据为2 ...
- 数据结构与算法-数组篇
数组是一种线性数据结构(数据之间只是简单的前后关系), 用一组连续的内存空间来存储一组具有相同类型的数据 数组支持随机访问, 根据下标随机访问的时间复杂度为O(1),如果正常查找数据用二分查找时间复杂 ...
- 数据结构与算法--力扣108题将有序数组转换为二叉搜索树
力扣108提将有序数组转换为二叉搜索树 近一年都比较关注算法相关的知识,也刷了不少题,之前的文章中大多也是算法相关的文章,但是感觉每次遇到树相关的题型都不能应对自如,因此还是有必要在相关知识上下功夫, ...
- 数据结构与算法--求1~n能组成的所有二叉搜索树的排列
给定一个整数n,生成并返回所有N个节点组成并且节点值从1到n互不相同的不同二叉树,可以按照任意顺序 二叉树文章列表: 数据结构与算法–面试必问AVL树原理及实现 数据结构与算法–二叉树的深度问题 数据 ...
- 数据结构与算法之美01-开篇词
开篇词 | 从今天起,跨过"数据结构与算法"这道坎 作者是王争,毕业于西安交通大学计算机专业.现在回想起来,本科毕业的时候,我的编程水平其实是很差的.直到读研究生的时候,一个师 ...
- 数据结构与算法?看这篇就够了!!!
程序 = 数据结构 + 算法 --图灵奖得主,计算机科学家N.Wirth(沃斯) 作为程序员,我们做机器学习也好,做Python开发也好,Java开发也好. 有一种对所有程序员无一例外的刚需 -- 算 ...
最新文章
- ERP与GMP结合在药类企业实施及应用
- 【OpenCV学习】XML的读写
- java put set_Java PutItemRequest.setItem方法代码示例
- MySQL多线程并发调优
- Solidworks常用插件介绍
- 比肩Sci-hub的论文下载神器——Library Genesis
- 数字校园APP开发与应用
- 微信小程序的父子组件传值
- 《太傻十日谈》读后感
- 计算机高深专业术语,Math
- 【Carla】自定义仿真场景制作
- 徘徊于千八关口未能如愿?黄金是涨是跌?走势分析策略指导
- 对齐次线性方程组同解充要条件的新理解
- Undelete Plus 2.7 恢复误删除的文件
- Java程序员简历内容及格式--Java程序员简历内容
- 朗伯辐射强度模型MATLAB,朗伯体辐射出射度与辐亮度的关系.PPT
- Java实现三人年龄
- Java分布式技术汇总
- BA-siemens-ppm模块调试
- C++程序设计:日历记事本
热门文章
- 【已解决】微信内置浏览器清缓存
- B站崩了,一群跟着躺枪!「小破站」到底发生了什么?
- 计算机专业的大一学生暑假6,一个计算机专业大三学生的一天 Day6
- uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程
- 深度 | 蚂蚁金融科技全面开放战略背后的“硬实力” 1
- 【树莓派】树莓派系统安装
- 闲鱼商品理解数据分析平台——龙宫
- c语言最简单的程序流程图,高手帮忙画个流程图简单的俄罗斯方块C语言程 – 手机爱问...
- php模板如何使用,PHP自定义模板标签详细解答,让你轻松驾驭
- 80C51 单片机使用汇编语言编写点亮和熄灭绿色LED流水灯附PROTEUS8仿真电路及效果(一)