当前位置: 首页 / 技术干货 / 正文
好程序员Java培训分享算法系列之算法概述

2020-06-02

Java培训 好程序员 北京Java培训 好程序员Java培训

  好程序员Java培训分享算法系列之算法概述,开篇:算法,一个听起来很厉害的词。也是最近几年特别火的词。很多大学生都想学习算法,因为它是大厂和高薪工作的代名词。但是有关算法系列的书籍或者文章不多,或者说是成系列的、从入门到精通的文章不多,从而导致我们学习起来比较困难。于是,我就计划写一系列适合大学生学习的算法文章,让更多的人能学习算法。本系列的所有算法实现将采用java代码实现,所以需要有一定的Java基础。

好程序员

  什么是算法?

  在Collins大词典中有如下解释:

  An algorithm is a series of mathematical steps, especially in a computer program, which will give you the answer to a particular kind of problem or question.

  在计算机中,由计算机程序(可以是java、c、Python等),通过一系列的数学步骤,解决一个特定问题的方法就是算法。

  大白话理解,算法就是在计算机中实现数学逻辑或者数学公式的代码。

  学习算法需要掌握的知识

  1、任何一种编程语言,java、c、c++、Python等。

  2、数据结构,不如数组、链表、树、图等

  3、有一定的数学功底,如果数学知识忘记不要紧,文章中如果涉及到高中以上数学知识的话,也会带着大家复习一下数学。

  算法和数学联系和区别

  上面我们解释什么是算法的时候,提到了数学,那么数学和算法是什么关系呢?是不是算法就等于数学呢?带着这样的疑问,我们来看下面的这个例子。

  1、一道小学数学题举例:

  题目:请计算1+2+3+4+…+N的和。

  数学公式:(1+N)*N/2

  上面这个公式就是数学公式,大家应该没有异议吧。因为我们在小学学习数学的时候就见过这样的一道数学题。那么同样的数学题用java代码怎么实现呢?

  2、Java代码实现:

  /**

  * 计算1+2+3+…+100的和

  * @param n

  * @return 返回总和

  */

  public static int algorithm(int n){

  int sum=0;

  for (int I = 1; I <= n; I++) {

  sum+=I;

  }

  return sum;

  }

  上面这个代码,稍微懂程序的人都能看明白,写得没有错,就是一个地道的java代码在计算1到n的总和。

  3、Java算法实现:

  public static int algorithm2(int n) {

  return (1+n)*n/2;

  }

  上面代码是java算法实现的1到n的总和,有同学可能有疑问,这不就是数学公式吗,写到代码里面就是算法了?对,这就是算法。当然,上面这个算法非常简单,简单到方法体内部就是一个数学公式;也会有非常复杂的数学逻辑需要有很多行代码才能实现。

  总结:用代码实现的数学叫做算法。

  学习算法为什么要掌握数据结构

  算法必然会有数据的输入和输出,比如上面的1到100的算法。入参就是输入的数据,返回值就是输出的数据。往往有一些算法在执行之前,需要先整理数据(就好比把数据存起来),整理数据必然要涉及到数据结构。数据提前整理的比较好,算法可能就比较简单;数据比较杂乱,算法可能就比较复杂。

  算法的作用

  为一个任务找到最合适的算法,可以大大提升计算机的性能。算法可以在固定的硬件条件下来提升系统的性能;如果没有算法,我们只能靠增加机器设备来提升系统性能。所以,算法有助于系统优化。往往在实际开发中,为了找到一个最合适的算法,我们需要反复且复杂的数学分析,也叫做算法分析。

  总结

  算法是一种特殊的数学形式,掌握算法,不论是Java程序员或者c程序员,都是有非常大的意义,至少写出来的代码性能好。

好程序员公众号

  • · 剖析行业发展趋势
  • · 汇聚企业项目源码

好程序员开班动态

More+
  • HTML5大前端 <高端班>

    开班时间:2021-04-12(深圳)

    开班盛况

    开班时间:2021-05-17(北京)

    开班盛况
  • 大数据+人工智能 <高端班>

    开班时间:2021-03-22(杭州)

    开班盛况

    开班时间:2021-04-26(北京)

    开班盛况
  • JavaEE分布式开发 <高端班>

    开班时间:2021-05-10(北京)

    开班盛况

    开班时间:2021-02-22(北京)

    开班盛况
  • Python人工智能+数据分析 <高端班>

    开班时间:2021-07-12(北京)

    预约报名

    开班时间:2020-09-21(上海)

    开班盛况
  • 云计算开发 <高端班>

    开班时间:2021-07-12(北京)

    预约报名

    开班时间:2019-07-22(北京)

    开班盛况
IT培训IT培训
在线咨询
IT培训IT培训
试听
IT培训IT培训
入学教程
IT培训IT培训
立即报名
IT培训

Copyright 2011-2023 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公网安备 11010802035720号