第一课,进阶高手的大门

来源:互联网 发布:mac 怎么设置打开方式 编辑:程序博客网 时间:2024/05/23 19:15

专题一:内行看门道。包括以下章节:

  1. 进阶高手的大门
  2. 数据艺术
  3. 程序的灵魂-算法
  4. 审判程序的灵魂

理解程序的本质

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

这里写图片描述

一小步的进阶

  1. 确认问题类型
    • 如:数值计算,求最小值个数
  2. 确认求解的步骤
    • 如:打开文件,读数据,关闭文件,计算和

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

实例分析1-1: 解决问题方案对比

1-1.c

#include <stdio.h>#include <malloc.h>long sum1(int n)//O(n){    long ret = 0;    int* array = (int*)malloc(n * sizeof(int));    int i = 0;    for(i=0; i<n; i++)    {        array[i] = i + 1;    }    for(i=0; i<n; i++)    {        ret += array[i];    }    free(array);    return ret;}long sum2(int n)//O(n){    long ret = 0;    int i = 0;    for(i=1; i<=n; i++)    {        ret += i;    }    return ret;}long sum3(int n)//O(1){    long ret = 0;    if( n > 0 )    {        ret = (1 + n) * n / 2;    }    return ret;}int main(){    printf("%d\n", sum1(100));    printf("%d\n", sum2(100));    printf("%d\n", sum3(100));    return 0;}

程序评鉴初探

  1. 用尽量少的内存空间解决问题
  2. 用尽量少的步骤解决问题

小结

  1. 程序是为了具体问题而存在的
  2. 程序需要围绕问题的解决进行设计
  3. 同一个问题可以有多种解决方案

问题:
- 如何追求程序的“性价比”?
- 是否有可量化的方法判别程序的好坏?

原创粉丝点击