niusouti.com

阅读以下说明和流程图回答问题,将解答填入对应栏。[说明]“直接插入法”排序是一种N2运算量的例程,只能用在N较小的时候,其方法是:挑出第二个数将它按与第一个数大小的顺序插入,然后挑出第三个数将它按大小顺序插入到前两个数中,如此下去,一直到最后一个也插入。注:流程中循环开始的说明按照“循环变量:循环初值,循环终值,增量”格式描述。[问题]将流程图的(1)~(5)处补充完整。

题目

阅读以下说明和流程图回答问题,将解答填入对应栏。

[说明]

“直接插入法”排序是一种N2运算量的例程,只能用在N较小的时候,其方法是:挑出第二个数将它按与第一个数大小的顺序插入,然后挑出第三个数将它按大小顺序插入到前两个数中,如此下去,一直到最后一个也插入。

注:流程中循环开始的说明按照“循环变量:循环初值,循环终值,增量”格式描述。

[问题]

将流程图的(1)~(5)处补充完整。


相似考题
参考答案和解析
正确答案:(1)1n-11; (2) a[j]; (3) a[j]a[i]; (4) a[i+1]=a[i]; (5) a[i+1]=a;
(1)1,n-1,1; (2) a[j]; (3) a[j]a[i]; (4) a[i+1]=a[i]; (5) a[i+1]=a; 解析:本题目考查流程图。
题目中已经给出了直接插入法排序的算法,由于该算法是从数组中第二个数起,取出并与前面的数进行排序,直到数组中最后一个数排序完成,所以,循环变量初值为1,终值为N-1,增量为1,按照题目中要求的格式,则为“1,N-1,1”。
由题目中的算法可知,我们要将取出来的数同排在其前面的数做比较,并插入,所以,首先要把取出来的数赋给一个变量,即(2)填入“a[j]”。然后从第j-1个数开始,如果a[i]>a[j],那么我们就将a[i]N移一位,以便空出一个位置来插入a[j],所以(4)填入“a[i+1]=a[i]”这样一直进行到a[i]a[j]或者i0,这时,我们就找到了a[j]要插入的位置,可以将a[j]插入,即(3)填入“a[j]a[i]”,(5)填入“a[i+1]=a”。
更多“ 阅读以下说明和流程图回答问题,将解答填入对应栏。[说明]“直接插入法”排序是一种N2运算量的例程,只能用在N较小的时候,其方法是:挑出第二个数将它按与第一个数大小的顺序插入,然后挑出第三个数将它按大小顺序插入到前”相关问题
  • 第1题:

    阅读以下说明,回答问题,将解答填入对应的解答栏内。

    . [说明] 请完成流程图以描述在数据A(1)至A(10)中求最大数和次大数的程序的算法。并将此改成PAD图。该算法的流程图如下图:


    正确答案:(1)max2 =A(1) mex1 =A(2) (2)i< =10 (3)max1 =A(i)1 max2 = max1 (4)i=i+1
    (1)max2 =A(1) mex1 =A(2) (2)i< =10 (3)max1 =A(i)1 max2 = max1 (4)i=i+1 解析:本题的算法思想是:先输入A(1)到A(10)的值,然后判断前两个数的大小。用变量max1存储最大数,用变量max2.存储次大数。然后逐个读入数据,分别和max1,max2比较,保证最大的存入max1,次大的存入max2。

  • 第2题:

    阅读下列说明和流程图,将应填入(n)处的语句写在对应栏内。

    【说明】

    设学生(学生数少于50人)某次考试的成绩按学号顺序逐行存放于某文件中,文件以单行句点“.”为结束符。下面的流程图用于读取该文件,并把全部成绩从高到低排序到数组B[50]中。

    【流程图】


    正确答案:(1)B[0]←a (2)i←0 (3)a="." (4)aB[j] (5)j--
    (1)B[0]←a (2)i←0 (3)a="." (4)aB[j] (5)j-- 解析:本题考查用程序流程图来描述排序。
    题目要求将文件中学生的成绩读出,并把全部成绩从高到低排序到数组B[50]中。这里面涉及两个问题,第一是从文件中读数,文件中的数据是以单行句点“.”为结束符的,在未读到此符号前,应该将继续取数据。第二是排序,每取到一个学生的成绩都要与数组的学生成绩比较,按照从高到低的顺序在数组中找到合适的位置存放。下面来具体分析流程图。
    第(1)空在条件判断为假的情况下执行流程中,如果条件为假说明从文件中取到的数据是学生成绩。从程序流程图中可以看到,从文件中读的数据存放在变量a中,而此空是第一次取数据,应该存放数组B的第一个位置,因此此空答案为B[0]←a。
    第(2)空是紧接着第(1)空来的,在上面已经把从文件中读到的第一个数存放到了数组中,接下来应该处理数组的下标问题,从后面的流程中可以推断出变量i是存放数组当前下标的,而且没有初值,那么此空的任务应该是用来给变量i赋一个初值,而对数组的操作应该从头开始,因此此空答案为i←0。
    第(3)空是循环的判断条件,如果条件成立则结束,在这之前又对文件进行了一次读数,根据我们上面的分析只有在读到了结束符时程序才结束,那么此空肯定是判断从文件中读到的数据是否为结束符,因此此空答案为a="."?。
    第(4)空也是一个循环的判断条件,如果条件成立,则将取到的数存放到数组的当前下标位置;如果不成立,则循环找到合适的位置再存放。从这里我们不难推断出,流程图中是将从文件取到的成绩与当前数组中的最小成绩进行比较的,而当前数组中的最小成绩存放在位置j中,因此此空答案为aB[i]?。
    第(5)空在循环体中,这个循环的作用是为当前从文件中读到的成绩在已经排好序的数组元素中找到合适的位置,找到了就要插入,数组中的元素是按从大到小排列的,在查找合适位置时是从后往前依次比较,因此此空的任务应该是将数组的下标往前移动,所以此空答案为“i--”。

  • 第3题:

    【判断题】在用insert向表插入数据时,值列表中的数据个数、顺序和数据类型必须与列名列表中的数据个数、顺序和数据类型一一对应

    A.Y.是

    B.N.否


    B

  • 第4题:

    阅读以下说明和流程图,回答问题将解答填入对应栏。

    [说明]

    下面的流程图,用来完成计算一组数组中的中值,其方法是:将数组中的一个值与其他值比较,并计算大于等于被比较数的数值的个数,以及小于等于被比较数的数值的个数,如果两数都大于n/2,则已经找到了中值,否则继续之前的步骤。

    注:流程中循环开始的说明按照“循环变量:循环初值,循环终值,增量”格式描述;

    [问题]

    将流程图的(1)~(5)处补充完整。


    正确答案:(1) j=-1; (2) x[j]!=x[i]; (3) count_lower++; (4) count_lower(n/2.0)||count higher(n/2.0); (5) x[j];
    (1) j=-1; (2) x[j]!=x[i]; (3) count_lower++; (4) count_lower(n/2.0)||count higher(n/2.0); (5) x[j]; 解析:本题目考查流程图。
    算法描述在题目中已经详细给出,通过阅读题目可知j用来定位数组中一个被比较的数,i用来循环遍历数组中所有的数。j应该从第0个数开始,又由于要执行一步j=j+1,所以(1)中应填入“j=-1”,counUligher++说明遍历的数比被比较的数大,即(2)中应填入“x[j]!=x[i]”相应的,(3)中就应填入“count_lower++”,题目说明中已经指出,当count_lower和count_higher都大于n/2时,就说明找到了中值,所以(4)应当填入“count_lower(n/2.0)][count_higher(n/2.0)”,最后,如果循环结束,则x[i]就应该是中值,(5)中应填入“x[j]”。

  • 第5题:

    假设树林F中有3棵树,其第一、第二和第三棵树的结点个数分别是n1、n2和n3,则与树林F对应的二叉树B根结点的右子树上的结点个数是 ______。


    正确答案:n2+n3
    n2+n3 解析:由森林到二又树的转换可知,森林F中第一棵树的根转换得到的二又树的根,T1其他结点均在B的根结点的左子树中, T2、T3的结点均在右子树中。所以右子树个数是n2+n3。