基本概念
2018-01-09 23:01
162 查看
什么是数据结构?
数据结构是是数据对象在计算机中的组织方式。分为逻辑结构。
物理存储结构
解决问题方法的效率,跟数据的组织方式有关、跟空间的利用效率有关、跟算法的巧妙程度有关。
抽象数据类型:
只描述数据对象集和相关操作集”是什么”,并不涉及”如何做到”的问题。
什么是算法?
有穷性(Finiteness)。算法的有穷性是指算法必须能在执行有限个步骤之后终止;确切性(Definiteness)。算法的每一步骤必须有确切的定义;
输入项(Input)。一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
输出项(Output)。一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
可行性(Effectiveness)。算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。
什么是好的算法?
空间复杂度S(n):占用存储单元的长度。时间复杂读T(n):耗费时间的长度。
一个for循环的时间复杂读等于循环次数乘以循环体代码的复杂度。
if-else结构的复杂度取决于if的条件判断复杂度和两个分支部分的复杂度,总体复杂度取决于三者中最大。
求最大子列和?
给定N个整数的序列{A1,A2,...,AN},求函数f(i,j)=max{0,∑jk=iAk }$的最大值。算法1:
int MaxSubseqSum1(int A[], int N) { int ThisSum,maxSum=0; int i,j,k; for(i=o;i<N;i++){/*i是子列左端的位置*/ ThisSum=0; /*ThisSum是A[i]到A[j]的子列和*/ for(j=i;j<N;j++){/*j是子列右端的位置*/ ThisSum += A[k]; if(ThisSu>MaxSum) maxSum=ThisSum; /*则更新结果*/ } /* j循环结束 */ }/* i循环结束 */ return MaxSum; } //T(N) = O(N^3)
算法2:对于相同的i,不同的j,只要在j-1次循环的基础上累加1项即可
//T(N) = O(N^2)
算法3:分而治之
//T(N) = O(NlogN)
算法4:在线处理
int MaxSubseSum4(int A[], int N) { int ThisSum,MaxSum; int i; ThisSum = MaxSum =0; for(i =0 ;i<N;i++){ ThisSum += A[i]; //向右累加 if(ThisSum > MaxSum) MaxSum = ThisSum; else if(ThisSum<0) ThisSum = 0; } return MaxSum; } //T(N) = O(N)
相关文章推荐
- 传输层协议之基本概念
- 深入理解Java:注解(Annotation)基本概念
- 第1课:JavaScript中级教程——基本概念
- 数据结构图之一(基本概念,存储结构,两种遍历)
- XPath基本概念(一)
- docker基本概念2
- C#学习基本概念(2000)---语句及语句关键字
- asp.net的一些基本概念
- 基于嵌入式操作系统VxWorks的多任务并发程序设计(1)――基本概念
- 数据结构-图的基本概念
- 装箱与拆箱以及java 的一些基本概念
- java基础之面向对象的基本概念(上)
- 第3章 基本概念(6)函数
- 音频处理中的几个基本的概念
- 超详细OSPF的基本概念;OSPF多区域配置和综合实验
- Android数据库之基本概念(上)
- 卷积神经网络的基本概念与mnist测试
- Java基本概念:集合类(Collection)List/Set/Map的区别和联系
- JDK 1.7 基本概念和目录结构