算法入门到精通系列之01_算法概述

开篇

算法,一个听起来很厉害的词。也是最近几年特别火的词。很多大学生都想学习算法,因为它是大厂和高薪工作的代名词。但是有关算法系列的书籍或者文章不多,或者说是成系列的、从入门到精通的文章不多,从而导致我们学习起来比较困难。于是,我就计划写一系列适合大学生学习的算法文章,让更多的人能学习算法。本系列的所有算法实现将采用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程序员,都是有非常大的意义,至少写出来的代码性能好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章