niusouti.com
更多“将数据元素{2,4,6,8,10,12,14,16,18,20}依次存放于一个一维数组中,然后采用折半查找元素12,比较过哪些数组元素?”相关问题
  • 第1题:

    将一个n阶三对角矩阵A的三条对角线上的元素按行压缩存放于一个一维数组B中, A[0][0]存放于B[0]中。对于任意给定数组元素A[i][j],它应是数组A中第______行的元素。


    正确答案:2i+j-3
    2i+j-3 解析:在三对角矩阵中,按行压缩存储,其转换公式为k=2i+j-3。

  • 第2题:

    给定一组长度为n的无序序列,将其存储在一维数组a[O..n-1]中。现采用如下方法找出其中的最大元素和最小元素:比较a[O]和a[n-1],若a[0]较大,则将二者的值进行交换;再比较a[1]和a[n-2],若a[1]较大,则交换二者的值;然后依次比较a[2]和a[n-3]、 a[3]和a[n-4]、…,使得每一对元素中的较小者被交换到低下标端。重复上述方法,在数组的前n/2个元素中查找最小元素,在后n/2个元素查找最大元素,从而得到整个序列的最小元素和最大元素。上述方法采用的算法设计策略是(64)。

    A.动态规划法

    B.贪心法

    C.分治法

    D.回溯法


    正确答案:C
    解析:本题考查算法设计基础知识。任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,解题所需的计算时间往往也越少,从而也较容易处理。分治法的设计思想是:将一个难以直接解决的大问题分解成一些规模较小的相同问题,以便各个击破,分而治之。如果规模为n的问题可分解成k个子问题(1k≤n),且这些子问题互相独立且与原问题相同。递归地求解这些问题,然后将各子问题的解合并得到原问题的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划法求解的问题,经分解得到的子问题往往不是独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,以至于最后解决原问题需要耗费指数级时间。动态规划算法,通常可按以下几个步骤进行:找出最优解的性质,并刻画其结构特征;递归地定义最优值;以自底向上的方式计算出最优值;根据计算最优值时得到的信息,构造一个最优解。回溯法有“通用的解题法”之称,用它可以系统地搜索一个问题的所有解或任一解。回溯法是一个既带有系统性又带有跳跃性的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。贪心法是一种不追求最优解,只希望得到较为满意解的方法。贪心法一般可以快速得到满意的解,因为它省去了为找最优解要穷尽所有可能而必须耗费的大量时间。贪心法常以当前情况为基础作最优选择,而不考虑各种可能的整体情况,所以贪心法不要回溯。

  • 第3题:

    性表中采用折半查找法(二分查找法)查找一个数据元素,线性表应(54)。

    A.数据元素按值有序

    B.采用顺序存储结构

    C.据元素按值有序,并且采用顺序存储结构

    D.据元素按值有序,并且采用链式存储结构


    正确答案:C
    解析:只有当线性表中数据元素按值大小有序排列,并且采用顺序存储结构时才能使用折半查找方法查找元素。即使线性表中数据元素按值大小有序排列,但采用的不是顺序存储结构(如链式),仍然不能够采用折半查找方法。本题应选C。

  • 第4题:

    ●在有11个元素的有序数组a[1..11]中进行二分查找(即折半查找),依次与(37)

    比较后,成功找到元素a[5]。

    (37)

    A.a[6]、a[2]、a[5]

    B.a[6]、a[4]、a[5]

    C.a[6]、a[3]、a[4]、a[5]

    D.a[6]、a[8]、a[4]、a[5]


    正确答案:C

  • 第5题:

    第四题 阅读以下说明、C函数和问题,回答问题1和问题2将解答填入答题纸的对应栏内。
    【说明】
    当数组中的元素已经排列有序时,可以采用折半查找(二分查找)法查找一个元素。下面的函数biSearch(int r[],int low,int high,int key)用非递归方式在数组r中进行二分查找,函数biSearch_rec(int r[],int low,int high,int key)采用递归方式在数组r中进行二分查找,函数的返回值都为所找到元素的下标;若找不到,则返回-1。

    【C函数1】
    int biSearch(int r[],int low,int high,int key)
    //r[low..high] 中的元素按非递减顺序排列
    //用二分查找法在数组r中查找与key相同的元素
    //若找到则返回该元素在数组r的下标,否则返回-1
    {
    int mid;
    while((1)) {
    mid = (low+high)/2 ;
    if (key ==r[mid])
    return mid;
    else if (key (2);
    else
    (3);
    }/*while*/
    return -1;
    }/*biSearch*/

    【C 函数 2】
    int biSearch_rec(int r[],int low,int high,int key)
    //r[low..high]中的元素按非递减顺序排列
    //用二分查找法在数组r中查找与key相同的元素
    //若找到则返回该元素在数组r的下标,否则返回-1
    {
    int mid;
    if((4)) {
    mid = (low+high)/2 ;
    if (key ==r[mid])
    return mid;
    else if (key return biSearch_rec((5),key);
    else
    return biSearch_rec((6),key);
    }/*if*/
    return -1;
    }/*biSearch_rec*/ 问题:4.1 (12分)
    请填充C函数1和C函数2中的空缺,将解答填入答题纸的对应栏内。 问题:4.2 (3分)
    若有序数组中有n个元素,采用二分查找法查找一个元素时,最多与( )个数组元素进行比较,即可确定查找结果。
    (7)备选答案:
    A.[log2(n+1)] B.[n/2] C.n-1 D.n


    答案:
    解析:
    low<=high
    (2)high=mid-1
    (3)low=mid+1
    (4)low<=high
    (5)low,mid-1
    (6)mid+1,high
    (7)A
    【解析】

    本题考察折半查找。二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
    二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果xa[n/2],则只要在数组a的右半部搜索x。
    总共有n个元素,渐渐跟下去就是n,n/2,n/4,....n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数。

  • 第6题:

    在12个互异元素构成的有序数组 a[1..12] 中进行二分查找(即折半查找,向下取 整),若待查找的元素正好等于a[9],则在此过程中,依次与数组中的( )比较后,查找成功结束。

    A.a[6]、 a[7]、 a[8]、 a[9]
    B.a[6]、a[9]
    C. a[6]、 a[7]、 a[9]
    D.a[6]、 a[8]、 a[9]

    答案:B
    解析:

  • 第7题:

    在数组中,数组名表示()。

    • A、数组第一个元素的首地址
    • B、数组第二个元素的首地址
    • C、数组所有元素的首地址
    • D、数组最后一个元素的首地址

    正确答案:A

  • 第8题:

    假定对有序表:(3,4,5,7,24,30,42,54,63,72,87,95)进行折半查找。若查找元素54,需依次与哪些元素比较?


    正确答案:查找元素54,需依次与30,63,42,54等元素比较。

  • 第9题:

    编一个程序,定义结构(有姓名,年龄,手机号码三个字段),再定义一个一维数组,把结构作为数组元素类型,存入数据,然后依次输出。


    正确答案: structContact
    {
    publicstringname;
    publicintage;
    publicstringtelephone;
    }
    classProgram
    {
    staticvoidMain(string[]args)
    {
    Contact[]c=newContact[3];
    //c[0]=newContact();//此三个语句,对于结构类型可以不用
    //c[1]=newContact();
    //c[2]=newContact();
    c[0].name="刘龙";
    c[0].age=54;
    c[0].telephone="13970861234";
    c[1].name="王鸣";
    c[1].age=42;
    c[1].telephone="13813254321";
    c[2].name="张星";
    c[2].age=39;
    c[2].telephone="13751461818";
    Console.Write("姓名:{0},",c[0].name);
    Console.Write("年龄:{0},",c[0].age);
    Console.WriteLine("手机号码:{0}",c[0].telephone);
    Console.Write("姓名:{0},",c[1].name);
    Console.Write("年龄:{0},",c[1].age);
    Console.WriteLine("手机号码:{0}",c[1].telephone);
    Console.Write("姓名:{0},",c[2].name);
    Console.Write("年龄:{0},",c[2].age);
    Console.WriteLine("手机号码:{0}",c[2].telephone);

  • 第10题:

    array_push()的作用是()

    • A、将数组的第一个元素弹出
    • B、将数组的最后一个元素弹出
    • C、将一个或多个元素压入数组的末尾
    • D、将一个或多个元素插入数组的开头

    正确答案:C

  • 第11题:

    问答题
    假定对有序表:(3,4,5,7,24,30,42,54,63,72,87,95)进行折半查找。若查找元素54,需依次与哪些元素比较?

    正确答案: 查找元素54,需依次与30,63,42,54等元素比较。
    解析: 暂无解析

  • 第12题:

    问答题
    什么是数组?数组有哪些特点?Java中创建数组需要使用哪些步骤?如何访问数组的一个元素?数组元素的下标与数组的长度有什么关系?

    正确答案: 数组是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和下标来惟一地确定数组中的元素。
    数组要进行定义和分配空间后才能使用。
    一维数组的定义方式为:
    typearrayName[];
    或type[]arrayName;
    分配内存空间则要用到运算符new,其格式如下:
    arrayName=newtype[arraySize];
    当定义了一个数组,并用运算符new为它分配了内存空间后,就可以引用数组中的每一个元素了。数组元素的引用方式为:
    arrayName[index]
    数组元素的下标从0开始,一直到数组的长度减1。
    解析: 暂无解析

  • 第13题:

    某一维数组中依次存放了数据元素12,23,30,38,41,52,54,76,85,在用折半(二分)查找方法(向上取整)查找元素54时,所经历“比较”运算的数据元素依次为(62)。

    A.41,52,54

    B.41,76,54

    C.41,76,52,54

    D.41,30,76,54


    正确答案:B
    解析:本题考查数据结构基础知识。设查找表的元素存储在一维数组r[1..n]中,那么在表中的元素已经按关键字递增(或递减)的方式排序的情况下,进行折半查找的方法是:首先将待查元素的关键字(key)值与表r中间位置上(下标为mid)的记录的关键字进行比较,若相等,则查找成功。若key>r[mid].key,则说明待查记录只可能在后半个子表r[mid+1..n]中,下一步应在后半个子表中再进行折半查找:若keyr[mid].key,说明待查记录只可能在前半个子表 r[1..mid-1]中,下一步应在r的前半个子表中进行折半查找,这样通过逐步缩小范围,直到查找成功或子表为空时失败为止。在题中,以中间元素41为界将数组元素分为12,23,30,38和52,54,76,85两部分,显然54在后半部分,该部分的中间元素为54(向下取整)或76(向上取整),在52、54构成的子查找表中,向上取整的中间元素为54,因此查找元素54所经历“比较”运算的数据元素依次为41,76,54。

  • 第14题:

    将数据元素2,4,6,8,10,12,14,16,18,20依次存放于一个一维数组中,然后采用折半查找方法查找数组元素12,被比较过的数组元素的下标依次为(52)。

    A.10,16,12

    B.10,12,16

    C.5,8,6

    D.5,6,8


    正确答案:C
    解析:第一次与数组下标为5的元素比较,不匹配;第二次与下标为8的元素比较,不匹配;第三次与下标为6的元素比较,匹配,查找成功。

  • 第15题:

    ● 某一维数组中依次存放了数据元素 12,23,30,38,41,52,54,76,85,在用折半(二分)查找方法(向上取整)查找元素54时,所经历“比较”运算的数据元素依次为 (62) 。

    (62)

    A. 41, 52, 54

    B. 41, 76, 54

    C. 41, 76, 52, 54

    D. 41, 30, 76, 54


    正确答案:B

  • 第16题:

    ● 某一维数组中依次存放了数据元素15,23,38,47,55,62,88,95,102,123,采用折半(二分)法查找元素95时,依次与 (60) 进行了比较。

    (60)

    A. 62, 88, 95

    B. 62, 95

    C. 55, 88, 95

    D. 55, 95


    正确答案:D

  • 第17题:

    某一维数组中依次存放了数据元素15,23,38,47,55,62,88,95,102,123,采用折半(二分)法查找元素95时,依次与( )进行了比较。

    A.62,88,95
    B.62,95
    C.55,88,95
    D.55,95

    答案:D
    解析:
    本题主要考查折半(二分)法查找算法。这里首先就需要我们能清楚理解该查找算法。
    在本题中,给出数据序列为15,23,38,47,55,62,88,95,102,123,其中有10个元素,那么首先进行比较的应该是第5个元素,即55,由于95大于55,那么应该在后半部分进行查找,这是应该与第8个元素进行比较,刚好是95,查找成功,然后结束。因此比较的元素有55和95。

  • 第18题:

    在顺序表(2,4,6,8,10)中采用折半查找方法查找元素5,要经过()次元素之间的比较。


    正确答案:3

  • 第19题:

    什么是数组?数组有哪些特点?Java中创建数组需要使用哪些步骤?如何访问数组的一个元素?数组元素的下标与数组的长度有什么关系?


    正确答案: 数组是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和下标来惟一地确定数组中的元素。
    数组要进行定义和分配空间后才能使用。
    一维数组的定义方式为:
    typearrayName[];
    或type[]arrayName;
    分配内存空间则要用到运算符new,其格式如下:
    arrayName=newtype[arraySize];
    当定义了一个数组,并用运算符new为它分配了内存空间后,就可以引用数组中的每一个元素了。数组元素的引用方式为:
    arrayName[index]
    数组元素的下标从0开始,一直到数组的长度减1。

  • 第20题:

    折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素()比较大小。


    正确答案:28,6,12,20

  • 第21题:

    下面关于引用一维数组元素说法正确的是()

    • A、引用数组元素采用数组名(下标)方式引用
    • B、引用数组元素采用数组名[下标]方式引用
    • C、引用数组元素采用数组名方式引用
    • D、引用数组元素采用[下标]数组名方式引用

    正确答案:B

  • 第22题:

    填空题
    折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素()比较大小。

    正确答案: 28,6,12,20
    解析: 暂无解析

  • 第23题:

    单选题
    array_push()的作用是()
    A

    将数组的第一个元素弹出

    B

    将数组的最后一个元素弹出

    C

    将一个或多个元素压入数组的末尾

    D

    将一个或多个元素插入数组的开头


    正确答案: C
    解析: 暂无解析

  • 第24题:

    填空题
    在顺序表(2,4,6,8,10)中采用折半查找方法查找元素5,要经过()次元素之间的比较。

    正确答案: 3
    解析: 暂无解析