第一课,进阶高手的大门
来源:互联网 发布:mac 怎么设置打开方式 编辑:程序博客网 时间:2024/05/23 19:15
专题一:内行看门道。包括以下章节:
- 进阶高手的大门
- 数据艺术
- 程序的灵魂-算法
- 审判程序的灵魂
理解程序的本质
程序是为了实际的问题而存在。 从本质上而言,程序是解决问题的步骤描述。
一小步的进阶
- 确认问题类型
- 如:数值计算,求最小值个数
- 确认求解的步骤
- 如:打开文件,读数据,关闭文件,计算和
问题: 如何判断求解步骤的好坏?
实例分析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;}
程序评鉴初探
- 用尽量少的内存空间解决问题
- 用尽量少的步骤解决问题
小结
- 程序是为了具体问题而存在的
- 程序需要围绕问题的解决进行设计
- 同一个问题可以有多种解决方案
问题:
- 如何追求程序的“性价比”?
- 是否有可量化的方法判别程序的好坏?
阅读全文
0 0
- 第一课,进阶高手的大门
- 数据结构-进阶高手的大门
- 0----如何进入编程高手的大门?
- javascript进阶高手的“经”
- 迈进程序员的大门
- 迈进程序员的大门
- 走进ReactiveCocoa的大门
- 推开HTML5的大门
- 【bzoj2163】复杂的大门
- 打开新世界的大门
- 迈进算法的大门
- VC游戏辅助原理第一季,迈入游戏安全大门的第一步
- 轻轻敲开nodeJs的大门--第一个nodeJs入门小程序
- C++高手进阶
- C++高手进阶
- Android高手进阶教程
- Android高手进阶教程
- Android高手进阶FAQ
- 图片位深的获取
- 25张图让你读懂神经网络架构
- Linux下启动Java程序的启动脚本编写
- ZAB 和paxos 简介
- java继承中的方法覆盖问题
- 第一课,进阶高手的大门
- npm ERR! Windows_NT 6.1.7601
- centos 安装 redis3.0.0 集群
- 2017.6.21 大都市meg 思考记录
- js获取下拉菜单的值
- 创建滑动条createTrackbar()
- SQL总结(六)触发器
- 单链表构建学生信息管理系统(C++)
- 椭圆一般方程参数求解