1. 首页
  2. 资讯

编程算法

学习java编程时,什么时候学习算法好点?谢谢邀请!算法和数据结构对于编程来说是非常重要的,因为程序设计说到底就是一个算法问题,在后端开发、大数据以及人工智能相关的开发中,算法

学习java编程时,什么时候学习算法好点?

谢谢邀请!

算法和数据结构对于编程来说是非常重要的,因为程序设计说到底就是一个算法问题,在后端开发、大数据以及人工智能相关的开发中,算法都是非常重要的从业基础。算法本身是独立于程序设计的,但是要想真正的掌握算法需要通过编程语言对算法予以实现,所以通常情况下都是掌握了编程基础之后再开始学习算法和数据结构。

以Web开发为例,学习Java的过程大概分为三个阶段,分别是编程语言基础、Web开发基础、分布式开发和框架开发,通常情况下在编程基础学习完之后就可以学习算法和数据结构了。Java编程基础包括掌握面向对象编程过程、数组、流程控制、封装、继承、多态、异常处理、IO、集合、多线程以及网络编程等内容。

算法设计的学习往往从排序开始,然后是递归求解、概率分析、随机算法、数据结构(栈、队列、链表、图、树等)、贪心算法、核算法、图算法等内容,算法的学习需要一个系统的过程,同时要结合实验进行。其实,算法的学习也可以先于编程语言的学习,不少算法设计的教材会提供基于算法的伪代码的实现过程,对于没有编程基础的人来说也能够了解算法的实现过程,看两个例子:

算法设计的基础是数学,所以在学习算法之前要对高等数学、线性代数、概率论和离散数学有一定的了解,因此数学对于计算机专业来说还是非常重要的,如果要想在软件研发这条路上走的更远,一定要有一个扎实的数学基础。

对于研发级程序员来说,几乎每天都要跟算法打交道,但是对于应用级程序员来说,与算法打交道的时候往往并不多,对于学习者来说要根据自身的知识结构来选择发展方向,做应用级研发也是可以的。

我的主要研究方向是大数据和人工智能,目前也是一名计算机专业的研究生导师,我会陆续在头条写一些关于互联网、大数据、人工智能等方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

如果有大数据相关的问题,也可以咨询我,谢谢!

通常所讲的编程中的算法是讲的是什么?

算法是解决“做什么”和“怎么做”的问题。程序中的操作语句,实际上就是算法的体现。显然,不了解算法就谈不上程序设计。通俗的解释一下算法吧。做任何事情都有一定的内容和步骤。例如,你想从武汉到北京去开会,首先要去买火车票,然后按时乘坐地铁到武汉站,登上火车,到北京站后坐汽车到会场,参加会议;你要买电视机,先要选好货物,然后开票,付款,拿发票,取货,打车回家;要考大学,首先要填报名单,交报名费,拿到准考证,按时参加考试,得到录取通知书,到指定学校报到注册等。这些步骤都是按一定的顺序进行,缺一不可,次序错了也不行。我们从事各种工作和活动,都必须事先想好进行的步骤,然后按部就班的进行,才能避免产生错乱。实际上,在日常生活中,由于已经养成习惯,所以人们并没意识到每件事都需要事先设计出“行动步骤”。例如吃饭、上学、打球、做作业等,事实上都是按照一定的规律进行的,只是人们不必每次都重复考虑它而已。

不要认为只有“计算”的问题才有算法。广义的说,为解决一个问题而采取的方法和步骤,就称为“算法”。例如,描述太极拳动作的图解,就是“太极拳的算法”。一首歌的乐谱,也可以称为该歌曲的算法。

一般来说计算机的算法可分为两大类别:数值运算算法和非数值运算算法。

编程能力主要是算法吗?

偶然看到了问答《1977-2017高考印象最深刻的事儿》,结果就不断给我推荐各种高考,邀请我回答各种高考问题(如图),因为头条的算法,我的人生就和高考绑定了!如果我真的关心高考,我会自己搜索的,头条是不是应该给我推荐些高考意外的信息开拓下视野呢?就像淘宝里,我买了什么,它就拼命给我推荐什么,正常的逻辑应该是我买过的东西一段时间都不会再买了吧? 总把算法、大数据当高大上来宣传,但是其实有些基本的逻辑就错了吧?(我承认推荐购物车里类似商品是对的)

如何才能记住各种算法?

这个问题问得很好,我那时候也是有着困惑。没入门的话,先看看几大经典的排序算法(直接插入,希尔排序,简单选择,堆排序,冒泡排序,快速排序,归并排序,基数排序),可以把代码背诵下来,然后复现。

但最好理解代码背后的数学逻辑,当你使用这些基础算法的时候,脑海里有个图浮现出来,然后你在这上面完善它整个算法流程。我那时候学习的方法是用扑克牌来学习经典算法,后面熟了之后就可以在代码上快速复现它。

不积跬步,无以至千里;不积小流,无以成江海。

现在有个网站是可以用动画学习算法和数据结构——VisuAlgo。VisuAlgo是由Steven Halim博士在2011年发布的一款可视化学习算法的工具,用于帮助其学生更好地理解数据结构和算法,可以让学生按自己的步骤来学习。下图是VisuAlgo的主页,不得不说我上去体验后感觉很有趣,很适合对基础算法的学习和了解,是一个找到后令人惊喜的网站。

VisuAlgo里面包含了许多先进的算法,这些算法在Steven Halim博士的书籍里都有讨论。就某种意义而言,这些先进的算法可视化/动画基本只能在VisuAlgo中找到。例如在图遍历可视化中,里面不仅标准的深度优先搜索(DFS)和广度优先搜索(BFS)算法,还包含了它们的变异。

之前没有这个网站时我是用笔和扑克牌来理解算法的,现在工具方便了,但是道理还在那。知识的体系结构类似一棵树,如果你想要学得快记得牢固,就必须把主干和粗线条先学习扎实,因为后来的高级知识类似树叶,需要有主干的支持才能挂靠牢固。


如果你对学习人工智能和深度学习感兴趣,可以订阅我的头条号,我会在这里发布所有与算法、机器学习以及深度学习有关的有趣文章。

(码字不易,若文章对你帮助可点个赞~)

算法好等同于编程能力强吗?

算法和编程不是同等而言,学好编程包含层面很多,基础的编程语言,良好的逻辑思维能力(算法算是包含在这个层面),编程最核心的是编程思想。

相比而言算法是编程基础里面占比相对高点,但不是全部。现在大致分析下如何练就高级的编程能力

有一门非常熟练的编程语言

一个好的编程者,必须有一门非常熟练的编程语言,这是作为编程的基本功,也算是编程的工具,编程语言属于基础,很初学者把编程语言看的特别重,觉得编程语言学不好一定搞不定编程,编程语言这种基础性的东西,一年学不好可以两年甚至更长的时间,总会有自己能学会的时候,所以初学觉得编程语言难学也是很正常的事情,学会了一种编程语言了,也不要觉得自己就得道成仙了,编程是一项综合能力很强的技能绝不仅仅一个项目决定。

良好的逻辑思维能力

为啥提到逻辑思维能力,这涉及到计算机语言的特性,就是理性思维能力,简单概述透过现象看本质,这里面涉及到算法思维,面对一个应用场景采用什么的逻辑更加合理,面对复杂的处理场景,采用什么样的算法更加合理,算法不是为了学而学习,需要学以致用。

算法的都是为了解决现实中的问题提炼出来的,所以在学习过程中尽量的还原到实际场景中。

具备编程思想

其实编程在具备良好的编程基础上,决定一个人的水平高低的主要因素就是编程思想了,遇到一个实际的问题,需要使用什么样的解决方案,什么样的代码框架都是编程思想要考虑的问题,举个简单的例子,解决高并发的问题,无论你用java语言还是c++处理,采用的思路基本上是一致的,甚至是别的编程语言,解决的关键问题是一致的。


所以编程能力是一项综合技能,绝不是一个编程语言或者算法就能搞定的事情。

觉得有收获就点个赞

编程算不算文科?

编程为什么算文科,基础确实是记忆的东西,每个学科都是记忆部分很多,但也有需要理解的东西。

如果按你的说法,任何学科都是文科了,数学也是文科了,数学需要记忆一些公式定理,高考的时候,出得题百分之九十是套路题,我虽然三年没接触高考了,依稀记得高三数学老师讲的,题型固定一种题一个套路,不用理解为什么也能做,看到椭圆就用椭圆的套路,看到函数就用函数的套路。

学什么东西都是从模仿开始,先模仿别人的,比如做数学题,也是先模仿书中的例题,明白之后就知道它的套路,碰到类似的也会做了。

所以学编程也是一样,如果你模仿过大量的别人的项目,比如做了大量软件,网站等等,你也会很熟悉它的套路了。不过你要模仿其中某一部分的知识时,就要理解为什么,比如现在非常流行的ajax无刷新原理,如果你只会复制,不会理解具体原理,到时候让你做一个从未接触的项目,你就会手忙脚乱了。总的来说,编程是理科思维,需要理解其中原理,没有像楼主说什么都可以套,什么都可以套,要程序员干嘛。

为什么大一是以 C 语言入门,而不是 Python?

每个程序员在他们的编程生涯中都应该学习C语言,因为它有太多难以忽视的好处了。除了它会给你提供更多的工作机会之外,C语言还会教给你更多的关于计算机的知识。它能给我们提供的裨益,,简单列举如下:

1.相比较其他的编程语言(像C++,JAVA),C语言是个低级语言。从总体上来说,低级的编程语言可以让你更好的了解计算机。

2.设备驱动程序和操作系统只能用C语言来编写。现在,你可能还从来没有编写过一个设备驱动程序或者一个操作系统,但是如果你需要去修改他们的时候,怎么办?

3.如果你想要得到一份编写微控制器程序的工作的时候,该怎么办?他们都是用C语言编写的。就因为不想学习一门新的语言,你就准备限制你能得到工作的机会吗?

4.C的程序比其他用别的语言写的程序,实现相同的功能,它用的代码行数更少,而它带来的运行效率却更快。有时候,你的程序所需要的速度,只有C语言能做到。

5.如果你学习过C语言,你就能学习现在任何的高级编程语言。因为所有的高级语言都是以C语言为基础的(像JAVA,C++,C#等等)。

6.因为C语言已经存在很多年了,它有广泛的使用团体并且有大量的现成代码可以利用。这就使你能在过去程序的基础上,快速和高效的编写新的算法和函数。

7.C语言是一个开源组织的语言。一个开源组织的产物--LINUX,就是用C语言写的。如果你会C语言,你就能参加这个组织并且还能向众多的开源组织投稿,比如参加Source Forge并且给他们投稿。

8.C语言是唯一一个向你阐述指针的本质的语言。而C#和Java干脆跳过了指针这个题目。可是指针确实使C语言变得更加强大。

9.找编程开发方面的工作时,C语言仍然是最普遍需要的语言。所以它值得你花时间去学会它。

10.任何里面有微处理器的设备都支持C语言。从微波炉到手机,都是由C语言技术来推动的。

如果每天坚持用12个小时学习一门编程语言,一年下来,编程能力会达到什么程度?

谢谢邀请!

这种学习方法不太提倡,有可能你学到的东西已经过时了,或者路线走歪了等等。

先回答你的问题,到底能学到什么程度,这个不太好衡量,为什么呢?因为计算机程序设计是实践科学领域,没有实际项目的检验,不太好说你能学习到什么程度。

有一点可以肯定,你一定看了不少书籍,但是看书在程序设计领域,仅仅是入门,程序员不是看几本书就能编程的,等你做上程序员你可能看看文档就可以了。

大部分书上的例子都是为了描述概念,所以都是小例子居多,所以说看书会提高,但是提高的有限。

建议在熟悉编程语法以后,找一个实习公司,通过参加项目实习,你会提高很快。

本文来自投稿,不代表本站立场,如若转载,请注明出处。