第一课——进阶高手的大门

时至今日,程序已经不仅仅是数据结构和算法了,我们需要使用面向对象的思维方式来解决很多现实生活地问题, 这样的问题可以不使用算法也不使用数据结构。但是,我们依旧需要学习这门课程,因为在我的专业中,这属于必修课程,一个不会算法的程序员,注定是可以轻易被替代的,况且,作为研究生,还有更高层次的数字信号处理方面的算法在等着我。

看一个例子,展示程序设计者的功底:

#include <iostream>

using namespace std;

long sum1(int n)
{
    long ret = 0;
    int* array = new int[n];

    for(int i=0; i<n; i++)
    {
        array[i] = i + 1;
    }

    for(int i=0; i<n; i++)
    {
        ret += array[i];
    }

    delete[] array;

    return ret;
}

long sum2(int n)
{
    long ret = 0;

    for(int i=1; i<=n; i++)
    {
        ret += i;
    }

    return ret;
}

long sum3(int n)
{
    long ret = 0;

    if( n > 0 )
    {
        ret = (1 + n) * n / 2;
    }

    return ret;
}

int main()
{
    cout << "sum1(100) = " << sum1(100) << endl;
    cout << "sum2(100) = " << sum2(100) << endl;
    cout << "sum3(100) = " << sum3(100) << endl;

    return 0;
}

我们明显可以知道,第三种采用高斯公式解决问题的程序员是功底最好的(上面的程序是一个好的引子,但是对于数组命名成array是个不好的地方,c++11中,array是std中自带的容器,命名成其他的更好)。这也体现了,数据结构真的是为了之后算法做铺垫的基础课程,算法有很多,但是离不开的是数学本源,数学知识的基础,决定了你能做到哪一个层次。

不过很可惜,别说算法了,大多数人连基础语言的基本语法都不能随心所欲地驾驭,所以,还得花上大部分时间补习基础语法,这是一个慢慢累积的过程。

 

原文地址:https://www.cnblogs.com/yangguang-it/p/7144460.html