专业课学习记录6(2014)

1.数据结构

1.一颗含有n个关键字的m阶B-树中进行查找,至多读盘(1+logm/2)次
n个关键字 则叶子节点总数为n+1;
假设含有n个关键字的m阶B-树的叶子节点在第L+1层,那么存取节点的个数就是L。
最坏情况下,第一层只有一个根节点,第二层最少2个节点
第三层至少有2[m/2]
第L+1层至少有2[m/2]^L-1

n+1>=2[m/2]^L-1

B-树经常应用于外部文件的检索,在查找过程中,某些子树并未常驻内存,因此在查找过程中,需要从外存读入到内存,读盘次数与待查找的节点在树中的层次有关,但最多不会超过树的高度。

2.设有n个不同关键码的记录在排序前已按关键码排好序,则用直接插入排序和快速排序对其关键码进行排序,需要进行比较的次数分别为(n-1;n*(n-1)/2)

直接插入排序算法的思想是:初始可认为文件中第一个记录已经排好序,然后将第二个到第n个记录依次插入到已排序的记录组成的文件中。在对第i个记录Ri插入时,依次从已排好序的前i-1个记录从右到左依次比较,找到Ri应插入的位置,将该位置之后的记录后移,空出位置让Ri记录插入。
在这里插入图片描述
在这里插入图片描述
记录已经排好序,则从2到n都只需要比较依次即可。

快速排序的基本思想是:从n个待排序的记录中任取一个记录(不妨去第一个记录),设法将该记录放置于排序后它最终应该放的位置,使它前面的记录都不大于它的排序码,后面的记录都大于它的排序码,然后对前后两部分重复上述过程。

在这里插入图片描述

第一个位置比较n-1次找到该放的位置
第2个找n-2次
。。。。
第n-1个找1次

n-1+n-2…+1=n*(n-1)/2

3.对下列四种排序方法,在排序中关键字比较次数同记录初始排列无关的是()
A.直接插入排序 B.二分法排序 C.快速排序 D.冒泡排序

冒泡排序:第一趟,对所有记录从左到右没相邻的两个记录的排序码进行比较,如果两个排序码不符合要求,则进行交换。这样一趟做完,将排序码的最大者放到最后一个位置,重复剩下的n-1个排序记录。

当初始记录有序时,只需进行一趟两两相邻比较,(没有发生交换)算法结束,n-1次
最坏就是第从大到小的序列,第一个需要比较n-1次,交换n-1次
即n*(n-1)/2
在这里插入图片描述

二分法
二分法
在找第i个记录的插入位置时,前i个记录已排好序,将第i个记录于已排好序的前i-1个的中间位置记录的排序码进行比较,如果第i个记录小于中间的记录排序码,则可以在前半部继续使用二分法查找,否则在后半部继续使用二分法查找,直到查找范围为空。

软件工程:
1.下面哪一个软件开发过程模型是基于文档驱动的(B)
A.敏捷过程 B.瀑布模型 C.演化模型 D.螺旋模型

https://blog.csdn.net/ziwen00/article/details/40583107

敏捷过程:
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

瀑布模型:
瀑布模型中,将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。

瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:

(1) 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;

(2) 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;

(3) 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。

演化模型:
  演化模型主要针对事先不能完整定义需求的软件开发。用户可以给出待开发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现。软件开发人员根据用户的需求,首先开发核心系统。当该核心系统投入运行后,用户试用之,完成他们的工作,并提出精化系统、增强系统能力的需求。软件开发人员根据用户的反馈,实施开发的迭代过程。第一迭代过程均由需求、设计、编码、测试、集成等阶段组成,为整个系统增加一个可定义的、可管理的子集。

在开发模式上采取分批循环开发的办法,每循环开发一部分的功能,它们成为这个产品的原型的新增功能。于是,设计就不断地演化出新的系统。 实际上,这个模型可看作是重复执行的多个“瀑布模型”。

“演化模型”要求开发人员有能力把项目的产品需求分解为不同组,以便分批循环开发。这种分组并不是绝对随意性的,而是要根据功能的重要性及对总体设计的基础结构的影响而作出判断。有经验指出,每个开发循环以六周到八周为适当的长度。

2.螺旋模型
螺旋模型,尤其重视风险分析阶段,特别适用于庞大并且复杂,非常高风险的项目。通常螺旋模型由四个阶段组成:制定计划、风险分析、实施工程和客户评估。螺旋模型中,发布的第一个模型甚至可能是没有任何产出的,可能仅仅是纸上谈兵的一个目标,但是随着一次次的交付,每一个版本都会朝着固定的目标迈进,最终得到一个更加完善的版本

内聚类型:
模块间的耦合和模块的内聚是度量模块独立性的两个准则。内聚是模块功能强度的度量,即模块内部各个元素彼此结合的紧密程度。一个模块内部各元素之间的紧密程度越高,则其内聚性越高,模块独立性越好。模块内聚类型主要有以下几类:

偶然内聚或巧合内聚:指一个模块内的各处理元素之间没有任何联系。
逻辑内聚:指模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
时间内聚:把需要同时执行的动作组合在一起形成的模块。
过程内聚:指一个模块完成多个任务,这些任务必须按指定的过程执行。
通信内聚:指模块内的所有处理元素都在同一数据结构上操作,或者各处理使用相同的输入数据或产生相同的输出数据。
功能内聚:指模块内的所有元素共同作用完成一个功能,缺一不可。
信息内聚:完成多个功能,各个功能在同一数据结构上操作。

描述软件体系结构的分层风格
分层风格依据不同的抽象层次,将系统组成为层次式结构。每个层次被建立为一个部件,不同部件中间通常用程序调用的方式进行连接。
优点:
1.设计机制清晰,,易于理解
2.支持并行开发
缺点:
1.难以修改
2.性能损失

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值