Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一本Java书够了吗?还是我应该先学习算法?_Java - Fatal编程技术网

一本Java书够了吗?还是我应该先学习算法?

一本Java书够了吗?还是我应该先学习算法?,java,Java,我是Java新手,我指的是第一本书 我必须学习算法才能用Java编写程序吗 我应该先学习算法,还是只学习有效的Java、Java拼图等Java书籍就足够了 我想成为一名成功的企业开发者。那么我应该精通哪些算法和数据结构呢?你向我推荐什么书 要成为一名成功的Java开发人员,我是否需要了解所有高级算法,如CLRS中给出的算法 我在过去的学期里有C和C++,我在他们中得了很好的分数,但那有点像是抢劫。我知道编程的基础知识。我不是新手。问题是我对任何语言都没有扎实的知识,我想成为一名开发人员而不是算法

我是Java新手,我指的是第一本书

我必须学习算法才能用Java编写程序吗

我应该先学习算法,还是只学习有效的Java、Java拼图等Java书籍就足够了

我想成为一名成功的企业开发者。那么我应该精通哪些算法和数据结构呢?你向我推荐什么书

要成为一名成功的Java开发人员,我是否需要了解所有高级算法,如CLRS中给出的算法


我在过去的学期里有C和C++,我在他们中得了很好的分数,但那有点像是抢劫。我知道编程的基础知识。我不是新手。问题是我对任何语言都没有扎实的知识,我想成为一名开发人员而不是算法专家。

我的建议是:学习Java的一个子集,然后学习一些基本算法,然后找出你想从那里走到哪里

您不需要了解Java的所有知识就可以尝试实现算法。您需要能够将几个方法(通常只有一个)封装在一个类中(甚至这只是因为Java坚持所有方法都是一个类)。您将需要条件和循环构造和数组。对于数据结构,您可能需要理解Java引用,尽管您可以使用整数作为数组下标来伪造指针

关键是算法很重要,但规模相对较小。数据结构通常需要一些算法才能工作。但是你不需要了解更大范围的问题,比如面向对象的设计来实验算法

编辑

从评论中,我看到你已经进入了“从那里走到哪里”的阶段

不要忘记算法(或离散数学),因为你不关心分析。广泛(不一定深入)的理解是一种有用的资源——它们非常适合解决问题的方法

例如,我最近被一个关于如何处理循环的依赖项排序问题弄糊涂了。我忘记了有向图中的“强连通成分”。一旦有人提醒我,这个问题就变得无关紧要了——在强连接的组件中尝试排序没有意义,但是这些组件形成了一个无环有向图。从那以后,答案就只差一点了

了解拓扑排序使最后一步变得微不足道。忘记强连接组件花费了我不少时间。了解Tarjans强连通组件算法的工作原理。。。维基百科和几分钟的用笔和纸就足够了,一旦你知道要找什么


事实上,我应该承认,“我被提醒”意味着我查阅了Dobbs博士的一篇关于拓扑排序的老文章,这篇文章使用了相同的方法。

@Chankey:根据我的说法,你应该同时掌握java和算法。首先学习Java编程语言的一些基础知识,如类、数据类型、函数等,然后学习排序和搜索的一些基本算法。现在,应用您的java知识来实现这些算法

干杯!!
穆库尔·古普塔(Mukul Gupta)

我在很大程度上支持史蒂文314,但我想具体说明一些事情

学习足够多的Java(或其他任何东西)以避免危险。然后是主要的数据结构(列表、堆栈、地图、树等),其中包括一些遍历它们的算法。在那之后,你的其他算法还能工作吗。这里有一些具体的目标,如果你想要的话,或多或少地反映了社会的秩序

  • 基本了解Java和OO。特别是遗传和多态性 (由Java定义)以及如何使用泛型
  • 对Big-O有基本的了解 (它是如何定义的,以及为什么您可以 删除较低阶项)
  • 能够使用、编写和跟踪递归函数
  • 对单链和双链列表进行编码。它们应该实现Iterable并支持添加和删除元素。 使用它们来实现堆栈和队列
  • 一旦你深入阅读一本类似于《算法》的书,你需要了解以下几点:

    • 麻省理工学院开放式课程(MIT OCW)的一位作者为该课程编写了算法
    • 一本书式算法的目的不仅仅是向您展示特定的算法,而是教您如何分析它们的运行时间。你需要少量的离散数学,基本上是求和和和递归关系。看看这里的大问题,看看我的意思
    说到视频,我认为这是一个更好的起点:。我很高兴这些都存在


    (碰巧我正在用一个.map)来实现一个.< /p>

    如果你想成为一个成功的开发人员,你需要学习很多东西。主要编程语言(java)和CS基础(例如算法)只是其中的两种。其他包括:沟通技巧、测试(我想说是TDD,但我不想挑起战争)、数据库处理、web内容、OOD等等。另外,许多您可能不会直接使用的东西,通过拓宽您的视野,仍然会有很大帮助(函数式编程、高级CS概念)

    学习这些东西没有固定的顺序。因为当你有动力的时候学习效果最好,所以选择你最感兴趣的或者对你帮助最大的。在这里学一点,然后在那里学一点。睁大眼睛,多练习,你会好起来的

    在您目前的情况下,我建议您拿起一本算法书,并在那里用java实现算法。它教你java和算法


    另外,请阅读“干净的代码”、“务实的程序员”和坚实的原则

    我建议您首先从Head开始学习。也是一个很好的网站。大多数Java书籍都将算法描述为本书的一部分,所以不要担心算法。首先学习Java

    让我给你一个找到好书的简单方法。总是