全部科目 > 软件设计师 >
2011年下半年 上午试卷 综合知识
第 63 题
知识点 数组   查找   算法描述  
关键词 数组   算法  
章/节 计算机软件知识  
 
 
在有n个无序无重复元素值的数组查找第i小的数的算法描述如下:任意取一个元素r,用划分操作确定其在数组中的位置,假设元素r为第k小的数。若i等于k,则返回该元素值;若i小于k,则在划分的前半部分递归进行划分操作找第i小的数;否则在划分的后半部分递归进行划分操作找第k-i小的数。该算法是一种基于(63)策略的算法。
 
  A.  分治
 
  B.  动态规划
 
  C.  贪心
 
  D.  回溯




 
 
相关试题     计算机软件知识 

  第17题    2015年下半年  
某软件项目的活动图如下图所示,其中顶点表示项目里程碑,连接顶点的边表示活动,边上的数字表示该活动所需的天数,则完成该项目的最少时间为(17)天。活动BD最..

  第33题    2010年上半年  
程序的三种基本控制结构是(33)。

  第64题    2016年上半年  
考虑一个背包问题,共有n=5个物品,背包容量为W=10,物品的重量和价值分别为:w={2,2,6,5,4},v={6,3,5,4,6},求背包问题的最大装包价值。若此为0-1背包..

 
知识点讲解
· 数组
· 查找
· 算法描述
 
        数组
               数组的定义及基本运算
               n维数组是一种"同构"的数据结构,其每个元素类型相同、结构一致。数组是定长线性表在维数上的扩张,即线性表中的元素又是一个线性表。
               数组结构的特点是:数据元素数目固定;数据元素具有相同的类型;数据元素的下标关系具有上下界的约束且下标有序。
               对数组进行的基本运算有以下两种。
               (1)给定一组下标,存取相应的数据元素。
               (2)给定一组下标,修改相应的数据元素中某个数据项的值。
               数组的顺序存储
               一旦定义了数组,结构中的数据元素个数和元素之间的关系就不再发生变动,因此数组适合于采用顺序存储结构。
               由于计算机的内存结构是一维线性的,因此存储多维数组时必须按照某种方式进行降维处理,即将数组元素排成一个线性序列,这就产生了次序约定问题。对二维数组有两种存储方式:一种是以列为主序的存储方式;另一种是以行为主序的存储方式。
               设每个数据元素占用L个单元,mn为数组的行数和列数,那么以行为主序优先存储的地址计算公式为
               Loc(aij)=Loc(a11)+((i-1)n+(j-1))L
               同样的,以列为主序优先存储的地址计算公式为
               Loc(aij)=Loc(a11)+((j-1)m+(i-1))L
 
        查找
        1)顺序查找
        顺序查找又称线性查找,顺序查找的过程是从线性表的一端开始,依次逐个与表中元素的关键字值进行比较,如果找到其关键字与给定值相等的元素,则查找成功;若表中所有元素的关键字与给定值比较都不成功,则查找失败。
        2)折半查找
        折半查找的过程是先将给定值与有序线性表中间位置上元素的关键字进行比较,若两者相等,则查找成功;若给定值小于该元素的关键字,那么选取中间位置元素关键字值小的那部分元素作为新的查找范围,然后继续进行折半查找;如果给定值大于该元素的关键字,那么选取比中间位置元素关键字值大的那部分元素作为新的查找范围,然后继续进行折半查找,直到找到关键字与给定值相等的元素或查找范围中的元素数量为零时结束。
        3)分块查找
        在分块查找过程中,首先将表分成若干块,每一块中关键字不一定有序,但块之间是有序的。此外,还建立了一个索引表,索引表按关键字有序。分块查找过程需分两步进行:先确定待查记录所在的块;然后在块中顺序查找。
        4)哈希表及其查找
        根据设定的哈希函数H(key)和处理冲突的方法,将一组关键字映射到一个有限的连续地址集上,并以关键字在地址集中的像作为记录在表中的存储位置,这种表称为哈希表,也称散列表。这一过程所得到的存储位置称为散列地址,由此形成的查找方法称为散列查找。
 
        算法描述
        算法(algorithm)就是解决特定问题的方法。描述一个算法可以采用文字描述,也可以采用传统流程图、N-S图或PAD图等。作为一个算法应该具备以下5个特性:
        .有穷性。一个算法必须在执行有穷步之后结束。
        .确定性。算法的每一步都应该具有确切的含义,没有二义性。
        .可行性。算法的每一步都必须是可行的。
        .输入。一个算法可以有0个或者0个以上的输入量。
        .输出。一个算法执行结束后至少要有一个输出量,表示算法对输入量进行运算和处理的结果。
        注意,算法和程序是有区别的——程序未必能满足有穷性。在本书中,只讨论满足动态有穷的程序,因此“算法”和“程序”是通用的。
        算法可以借助各种工具描述出来。一个算法可以是用自然语言、数字语言或约定的符号来描述,也可以用计算机高级程序语言来描述,如流程图、Pascal语言、C语言、伪代码或决策表等。下面以从n个元素中查找最大值为例,来讲解用流程图和伪代码这两种常见方法对算法的不同描述:
        (1)用流程图描述算法。
        从n个整数元素中查找出最大值,若用流程图描述如下图所示。
        
        用流程图描述算法
        (2)用伪代码描述算法。
        除了可以用流程图描述之外,还可以用伪代码来进行描述。
        



更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2025 All Rights Reserved
软考在线版权所有