今天真心郁闷,跟男盆友斗嘴战斗就算了吧,租个小房子过这么悲摧的生活还被中介欺负。真是的!气死了。奉劝各位亲,以后在北京租房子的话,最好都能找房东直租的,不要无辜被宰呀。
等我以后有钱了,有一堆房子需要出租的话,不管过程有多麻烦、多艰辛,反正绝不找中介,免得让他们继续坑人。
今天实验室各种开会,学习的内容比较少,勉强发发,也算是收获了吧。加油!
第一章 数据结构:相互间存在一种或多种特定关系的数据元素的集合。
数据结构:是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。
程序设计=数据结构+算法
数据:描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。“整型、实型等数值类型和字符、声音、图像、视频等非数值类型”
数据元素:组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。
数据项:一个数据元素可以由若干个数据项组成。“不可分割的最小单位”
数据对象:是性质相同的数据元素的集合,是数据的子集。
数据结构:相互间存在一种或多种特定关系的数据元素的集合。
逻辑结构(数据对象中数据元素之间的相互关系):----------------------->面向问题的
集合结构、线性结构、树形结构、图形结构
物理结构(数据的逻辑结构在计算机中的存储形式):--------------------->面向计算机的
顺序存储结构、链式存储结构
数据类型:是指一组性质相同的值的集合以及定义在此集合上的一些操作的总称。
抽象是指抽取出事物具有的普遍性的本质。
抽象数据类型(ADT):是指一个数学模型以及定义在该模型上的一组操作。它体现了程序设计问题中问题分解、抽象和信息隐藏的特性。
印象深刻的话:
实际上,无论学什么,都要努力才可以学到真东西。只有真正掌握技术的人,才有可能去享用它。如果你中途放弃了,之前所有的努力和付出都会变得没有价值。
第二章 算法:是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
算法的五个基本特性:输入、输出、有穷性、确定性(每一步都有确定含义,不会出现二义性)和可行性
算法设计的要求:
1,正确性
(1)没有语法错误
(2)对合法输入产生满足要求的输出结果
(3)对非法输入得出满足规格的说明结果
(4)对精心选择的甚至刁难的测试数据都有满足要求的输出结果。
2,可读性
3,健壮性:当输入数据不合法时,算法也能做出相关处理。而不是产生异常或莫名其妙的结果。
4,时间效率高和存储量低
算法效率的度量方法:事后统计方法(较差,不科学,不准确),事前分析估计算法
一个高级语言编写的程序在计算机上运行时所消耗的时间取决于:算法采用的策略、方法,编译产生的代码质量,问题的输入规模,机器执行指令的速度。在分析一个算法的运行时间时,重要的是把基本操作的数量与输入规模关联起来,即基本操作的数量必须表示成输入规模的函数。
函数的渐进增长:给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n>N,f(n)总是比g(n)大,那么,我们说,f(n)的增长渐进快于g(n)。
算法的时间复杂度,T(n)=O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度。其中,f(n)是问题规模n的某个函数。
常见的时间复杂度:O(1)
平均时间复杂度和最坏时间复杂度,一般要求计算时,均指计算最坏的时间复杂度
算法的空间复杂度:是通过计算算法所需的存储空间实现,算法空间复杂度的计算公式:S(n)=O(f(n)),其中,n为问题规模,f(n)为语句关于n所占存储空间的函数。一般情况下,一个程序在机器上执行时,除了所需要存储程序本身的指令、常数、变量和输入数据外,还需要存储对数据操作的存储单元。