第一章 绪论

1.1什么是数据结构

数据:整数,字串,图像等都可以说是数据

数据元素:树的一个节点,每一种数据结构中的圆圈,由数据项组成

                  举个例子:比如一张地图,吧一个城市作为一个数据元素,那么可以把每个城市的经纬度,人口数作为它的数据项,                    多个数据项构成一个数据元素,我们对数据元素进行操作

数据对象:是性质相同的元素的集合,例如整数集合,字符集合等

数据结构:数据元素之间的关系成为结构

有四类基本数据结构:1.集合

                                    2.线性结构

                                    3.树形结构

                                    4.网状或图状结构

                                   

数据结构在计算机中的表示(映像)称为物理结构,又称存储结构。

抽象数据类型(ADT):就是将数据结构封装好的类,可以直接使用的那种,比如java的List类

1.2 找最长子串之和的算法

1.暴力搜         

                  

2.算法1的优化

算法1的第三个for是多余的,对于相同的i不需要重新加,只需要在原来的基础上加一个元素就可以了

1.3 分治法

分治法:把一个大的问题分成小部分来解决

对于找最大子序列的和,要怎么使用分治呢?

先把整个序列从中间分成两份,然后递归地分治地求解两边的最大值,再找跨越中线的最大值,三个值最大的那一个就是最大的子序列和。具体实施流程可以从上图看出:

首先从-2和-1之间进行分割,分成了左右两边,那么,我们得先找出左边的最大值,可是左边还是有比较多的数字,那么继续分治。

对左边分治在-3和5之间划线,分成左右两部分,左部分是4和-3,有两个数,

对这两个继续分治,那么左边得到最大是4,右边-3为负数,直接返回0,跨越边界和是4-3=1;比较4,1,0得到4和-3这一左部分最大为4,同理,右边部分5和-2可以得到右部分最大的和是5那么还需要一个跨越边界的和,从-3和5之间的那条橙线往左看,-3+4=1,引用左边的结果1,继续往右看,1+5=6,6-2=4;这期间最大的就是6,因此跨越边界之和最大是6,比较4,5,6得到-2和-1这第一条红线的左边部分最大子列和为6,同理可得右边最大子列和为8。那么又还需要一个跨越边界和,从最粗的红线往左看-2+5=3-3+4=4,引用左边最大的结果4,继续往右看,4-1+2=5+6=11-2=8,这期间最大的是11所以取11,比较11,6,8最大的是11,因此最长子列和即为11。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值