菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
30
0

【数据结构】1_进阶高手的大门

原创
05/13 14:22
阅读数 1265

理解程序的本质

问题:为什么会有各种各样的程序存在?程序的本质是什么?

  • 程序是为了解决实际问题而存在的,从本质而言,程序是解决问题的步骤描述。

image.png

一小步的进阶:理解实际问题
  • 确认问题类型

    • 如:数值计算,求最小值个数
  • 确认求解步骤

    • 如:打开文件,读取文件,关闭文件,计算和

问题:如何判断问题求解步骤的好坏?

实例分析:判断求解步骤的好坏

#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;
}

程序评判初探

  • 用尽量少的时间解决问题
  • 用尽量少的步骤解决问题
  • 用尽量少的内存解决问题

优秀的开发者追求高质量的代码

数据结构的历史起源

  • 1968 年由高德纳教授(Donald E.Knuth)开创
  • 同年,在计算机的学位课程中出现(必修)

image.png
主要成就

  1. ACM教授的图灵奖、软件系统将和霍泼奖
  2. 美国数学会授予Lester R.Ford奖、J.B.Priestley奖和Steele奖
  3. TEX排版软件和METAFONT字形设计软件
  4. 《计算机程序设计的艺术》等系列书籍
  5. 。。。

数据结构课程的研究范围

  • 非数值计算类型的程序问题
  • 数值间的组织和操作方式
  • 数据的逻辑结构和存储结构

历史上的经典公式:程序= 数据结构 + 算法

对于数据结构和算法的研究,语言不重要,重要的是思想

小结

  • 程序是为了解决实际问题而存在的
  • 针对同一个问题可以由多种解决方案
  • 专业程序员应该尽量追求高质量的程序
  • 数据结构课程主要研究非数值计算问题

注:
经典公式在结构化程序设计时代提出。当今计算机已在解决实际生活中的问题,而这些问题往往非常复杂,经典公式已不能很好的处理,于是面向对象程序设计方法被提出。
但经典公式在本门课程中依旧可以遵循。

以上内容参考狄泰软件学院系列课程,请大家保护原创!

发表评论

0/200
30 点赞
0 评论
收藏