关键词:
理解程序的本质
1.为什么会有各种各样的程序存在,程序的本质是什么?
(1)程序是为了解决实际问题而存在的,从本质上而言,程序是解决实际问题的步骤描述
(2)一小步的进阶:理解实际问题
①确认问题类型:如:数值计算,求最小值个数
②确认求解步骤:如:打开文件,读数据,关闭文件,计算和
2.如何判断问题求解步骤的好坏
【实例分析】
1 /* 2 问题:给定一个整数 n,编程求解 1 + 2 + 3 + ... + n 的和。 3 4 QQ交流群: 199546072 5 6 D.T.Software 7 */ 8 9 10 #include <iostream> 11 12 using namespace std; 13 14 long sum1(int n) 15 { 16 long ret = 0; 17 int* array = new int[n]; 18 19 for(int i=0; i<n; i++) 20 { 21 array[i] = i + 1; 22 } 23 24 for(int i=0; i<n; i++) 25 { 26 ret += array[i]; 27 } 28 29 delete[] array; 30 31 return ret; 32 } 33 34 long sum2(int n) 35 { 36 long ret = 0; 37 38 for(int i=1; i<=n; i++) 39 { 40 ret += i; 41 } 42 43 return ret; 44 } 45 46 long sum3(int n) 47 { 48 long ret = 0; 49 50 if( n > 0 ) 51 { 52 ret = (1 + n) * n / 2; 53 } 54 55 return ret; 56 } 57 58 int main() 59 { 60 cout << "sum1(100) = " << sum1(100) << endl; 61 cout << "sum2(100) = " << sum2(100) << endl; 62 cout << "sum3(100) = " << sum3(100) << endl; 63 64 return 0; 65 }
(1)程序评鉴初探
①用尽量少的时间解决问题
②用尽量少的步骤解决问题
③用尽量少的内存解决问题
(2)优秀的开发者追求高质量的代码
3.数据结构课程的历史起源
(1)1968年,由高纳德教授(Donald E.Knuth)开创
(2)同年,在计算机科学的学位课程中出现(必修)
(3)高纳德的主要成就
①ACM授予图灵奖、软件系统奖和霍泼奖
②美国数学会授予Lester R.Ford奖、J.B.Priestley奖和Steele奖
③TEX排版软件和METAFONT字型设计软件
④《计算机程序设计的艺术》等系列技术书籍
卷数 |
主要内容 |
第1卷 基本算法 |
第1章:基本概念 第2章:信息结构 |
第2卷 半数值算法 |
第3章:随机数 第4章:算术 |
第3卷 排序与查找 |
第5章:排序 第6章:查找 |
第4卷 组合算法 |
第7章:组合检索 第8章:递归 |
第5卷 语法算法 |
第9章:词法扫描 第10章:语法分析 |
第6卷 语言理论 |
第11章——还在准备中… |
第7卷 编译程序 |
第12章——还在准备中… |
Bill Gates的评价:如果你认为你是一名真正优秀的程序员……读Knuth的《计算机程序设计艺术》,如果你能读懂整套书的话,请给我发一份你的简历。 Byte的评价:这是一套集所有基础算法之大成的经典之作。当今软件开发人员所掌握的绝大多数计算机程序设计的知识都来源于此。 |
4. 数据结构课程的研究范围
(1)非数值计算类型的程序问题
①数值计算是指使用计算机求解数学问题近似解的方法与过程。数值计算主要研究如何利用计算机更好的解决各种数学问题。
②非数值计算是指计算的对象不仅仅是数字,而是人的思维。是自然界和人类社会的一切事物,更确切地说是某些信息。如数据、文字、语言、图形、知识、事物、事物的运动过程及思维过程。例如,用计算机下棋。)
③数据结构研究的是非数值计算问题,即不是研究科学计算的问题。
(2)数据间的组织和操作方式
(3)数据的逻辑结构和存储结构
(4)历史上的经典公式:程序 = 数据 + 算法,对于数据结构算法的研究,语言不重要,重要的是思想。
5. 小结
(1)程序是为了解决实际问题而存在的
(2)针对同一个问题可以有多种解决方案
(3)专业程序员应该尽量追求高质量的程序
(4)数据结构课程主要研究非数值计算问题
第一课——进阶高手的大门
...存在从本质上而言,程序是解决问题的步骤描述一小步的进阶首先理解实际问题!确认问题类型–如:数值计算,求最小值个数确认求解的步骤–如:打开文件,读数据,关闭文件,计算和问题:如何判断求解步骤的好坏通过... 查看详情
第14课进阶面向对象(下)(代码片段)
类之间的基本关系: 类之间的基本关系--继承: 类之间的基本关系--组合:类的表示法: 类的表示法--简化 类的表示法--改进1 类的表示法--改进2 类的表示法--改进3 类的表示法--改进4... 查看详情
elasticsearch顶尖高手系列-高手进阶篇视频教程
14套java精品高级架构课,缓存架构,深入Jvm虚拟机,全文检索Elasticsearch,Dubbo分布式Restful服务,并发原理编程,SpringBoot,SpringCloud,RocketMQ中间件,Mysql分布式集群,服务架构,运维架构视频教程 14套精品课程介绍:1、14套... 查看详情
第13课进阶面向对象(上)
日常生活中,我们都习惯于对事物进行分类,那么这种分类思想是否可以引入程序设计中呢?面向对象的基本概念: 类和对象的意义: 一些有趣的问题;小结: 查看详情
scala实战高手****第6课:零基础实战scala集合操作及spark源码解析
本课内容1.Spark中Scala集合操作鉴赏2.Scala集合操作实战 ------------------------------------------------------------------------------------------------------------------------/** * 大数据技术是数据的集合以及对数据集合的操作技 查看详情
elasticsearch顶尖高手系列-高手进阶篇(最新第二版)
第1节结构化搜索_IT技术论坛案例背景介绍第2节结构化搜索_在案例中实战使用termfilter来搜索数据第3节结构化搜索_filter执行原理深度剖析(bitset机制与caching机制)第4节结构化搜索_在案例中实战基于bool组合多个filter条件来搜索... 查看详情
javaee精英进阶课学习笔记《博学谷》(代码片段)
第1章亿可控系统分析与设计DownloadJavaEE精英进阶课提qu码:xb2k学习目标了解物联网应用领域及发展现状能够说出亿可控的核心功能能够画出亿可控的系统架构图能够完成亿可控环境的准备并了解亿可控的功能结构完成设备管... 查看详情
第02课:springboot进阶(代码片段)
上一篇带领大家初步了解了如何使用SpringBoot搭建框架,通过SpringBoot和传统的SpringMVC架构的对比,我们清晰地发现SpringBoot的好处,它使我们的代码更加简单,结构更加清晰。从这一篇开始,我将带领大家更加... 查看详情
行人重识别计算机视觉进阶系列第一课基础知识
【行人重识别】🖐计算机视觉进阶系列🖐第一课基础知识概述行人重识别rank-1mAP损失函数交叉熵TripletLossHardNegative概述行人重识别(PersonRe-Identification)是利用计算机视觉技术判断图片或视频中是否存在特定行人的技术.行... 查看详情
scala实战高手****第14课scala集合上的函数式编程实战及spark源码鉴赏
packagecom.dt.spark.scala.bascisobjectFunctional_Itearal defmain(args:Array[String]):Unit= valrange=1to10 vallist=List(1,2,3,4,5) 查看详情
coolblog开发笔记第4课:数据库模型设计
...适合零基础的朋友入门,也适合有一定基础的爬虫爱好者进阶,如果你不会分布式爬虫 查看详情
行人重识别计算机视觉进阶系列第一课基础知识
【行人重识别】🖐计算机视觉进阶系列🖐第一课基础知识概述行人重识别rank-1mAP损失函数交叉熵TripletLossHardNegative概述行人重识别(PersonRe-Identification)是利用计算机视觉技术判断图片或视频中是否存在特定行人的技术.行... 查看详情
ctf_web:攻防世界高手区进阶题wp(1-4)(代码片段)
0x00前言Web高手进阶区的题是对信息搜集、协议理解、php语法掌握等进阶知识的考查,越往后,题目越难,也不知道自己可以做到第几,持续更新吧。0x01baby_web题目描述:想想初始页面是哪个打开之后发现初始... 查看详情
scala实战高手****第7课:零基础实战scala面向对象编程及spark源码解析
/** * 如果有这些语法的支持,我们说这门语言是支持面向对象的语言 * 其实真正面向对象的精髓是不是封装、继承、多态呢? * --->肯定不是,封装、继承、多态,只不过是支撑面向对象的 * 一些... 查看详情
scala实战高手****第13课scala模式匹配实战和spark源码鉴赏
packagecom.dt.spark.scala.bascisclassDataframeworkcaseclassComputerframework(name:String,popular:Boolean)extendsDataframeworkcaseclassStorgeframework(name:String,popular:Boolean)extendsDataframeworkob 查看详情
delphi高手突破(三)delphi高级进阶
第3章 异常及错误处理健壮的程序来自于正确的错误处理。 相信我,总会有意外的……Delphi 高手突破 正如同现实生活中我们不可能事事如意,你所写的代码也不可... 查看详情
acwing算法基础课,提高课,进阶课目录
1、算法基础课2、算法提高课3、算法进阶课 查看详情
《重构》编程高手进阶之路
重构的定义:重构是一种在不改变软件可观察行为的前提下对软件内部结构一种调整。重构的目标:1.代码容易阅读。2.所有的逻辑都只在唯一的地点指定。3.新的改动不会危机到现有的行为。4.尽可能简单表达条件逻辑。重构与... 查看详情