假定对元素序列(7, 3, 5, 9, 1, 12, 8, 15)进行快速排序,则进行第一次划分后,得到的左区间中元素的个数为()。A、 2B、 3C、 4D、 5

题目

假定对元素序列(7, 3, 5, 9, 1, 12, 8, 15)进行快速排序,则进行第一次划分后,得到的左区间中元素的个数为()。

  • A、 2
  • B、 3
  • C、 4
  • D、 5

相似考题

4.●试题四阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】将一正整数序列{K1,K2,…,K9}重新排列成一个新的序列,新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面),最后调用writeDat()函数的新序列输出到文件out.dat中。在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。例:序列 {6,8,9,1,2,5,4,7,3}经重排后成为{3,4,5,2,1,6,8,9,7}【函数】#include<stdio.h>#include<conio.h>void jsValue(int a[10][9]){int i,j,k,n,temp;int b[9];for(i=0;i<10;i++){temp=a[i][0];k=8;n=0;for(j=8;j=0;j--){if(temp<a[i][j]) (1) =a[i][j];if(temp>a[i][j]) (2) =a[i][j];if(temp=a[i][j]) (3) =temp;}for(j=0;j<9;j++)a[i][j]=b[j];}}void main(){int a[10][9]={{6,8,9,1,2,5,4,7,3},{3,5,8,9,1,2,6,4,7},{8,2,1,9,3,5,4,6,7},{3,5,1,2,9,8,6,7,4},{4,7,8,9,1,2,5,3,6},{4,7,3,5,1,2,6,8,9},{9,1,3,5,8,6,2,4,7},{2,6,1,9,8,3,5,7,4},{5,3,7,9,1,8,2,6,4},{7,1,3,2,5,8,9,4,6}};int i,j;(4) ;for(i=0;i<10;i++){for(j=0;j<9;j++){printf("%d",a[i][j]);if( (5) )printf(",");}printf("\n");}getch();}

参考答案和解析
正确答案:B
更多“假定对元素序列(7, 3, 5, 9, 1, 12, 8, 15”相关问题
  • 第1题:

    阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。

    【说明】

    将一正整数序列{K1,K2,…,K9}重新排列成一个新的序列,新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面),最后调用writeDat()函数的新序列输出到文件out.dat中。

    在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。

    例:序列{6,8,9,1,2,5,4,7,3}

    经重排后成为{3,4,5,2,1,6,8,9,7}

    【函数】

    include < stdio. h >

    include < conio. h >

    void jsValue( int a [10] [9] )

    { int i,j,k,n,temp;

    int b[9];

    for(i=0;i<10;i++)

    { temp=a[i] [0];

    k=8;n=0;

    for(j=8;j=0;j--)

    { if(temp < a[i] [j]) (1)=a[i][j];

    if(temp >a[i] [j]) (2)=a[i][j];

    if(temp =a[i] [j]) (3)= temp;

    }

    for(j=0;j<9;j++) a[i][j] =b[j];

    }

    }

    void main( )

    int a[10] [9] = {{6,8,9,1,2,5,4,7,3},{3,5,8,9,1,2,6,4,7},

    {8,2,1,9,3,5,4,6,7}, {3,5,1,2,9,8,6,7,4},

    {4,7,8,9,1,2,5,3,6}, {4,7,3,5,1,2,6,8,9},

    {9,1,3,5,8,6,2,4,7}, {2,6,1,9,8,3,5,7,4},

    {5,3,7,9,1,8,2,6,4}, {7,1,3,2,5,8,9,4,6}

    };

    int i,j;

    (4);

    for(i=0;i<10;i++) {

    for(j=0;j<9;j++) {

    printf("%d",a[i] [j] );

    if((5))printf(",");

    }

    printf(" \n" );

    }

    getch( );

    }


    正确答案:(1)b[k--] (2)b[n++] (3)b[n] (4)jsValue(a) (5)j=7
    (1)b[k--] (2)b[n++] (3)b[n] (4)jsValue(a) (5)j=7 解析:在主函数中先要调用函数jsValue()对数组a进行处理,所以(4)空应填入“jsValue(a)”。然后输出数组元素,同一行的元素之间用逗号分隔,所以(5)空应填入“j=7”。
    函数jsValue()是将数组按题目要求进行排序。通过观察发现处理后的数组中元素的顺序与原来的顺序相反,并且每一行中没有与第一个数相同的数,所以是从后往前处理,也就是将每组从最后往前倒序逐个问第一个数比较,比它大的就放到临时数组b中的最后,比它小的就放到临时数组b中的最前面,以次类推,所以(1)空应填入“b[k- -]”,(2)空应填入“b[n++],(3)空应填入“b[n]”。最后将b数组赋给a数组。

  • 第2题:

    下列程序的功能是:将一正整数序列{K1,K2,…,K9}重新排成一个新的序列。新序列中,比K1小的数都在K1的左面(后续的再向左存放),比K1大的数都在K1的右面(后续的再向右存放),从K1向右扫描。要求编写函数jsValue()实现此功能,最后调用函数writeDat()把新序列输出到文件out90.dat中。

    说明:在程序中已给出了10个序列,每个序列中有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。

    例如:序列排序前 {6,8,9,1,2,5,4,7,3}

    序列排序后 {3,4,5,2,1,6,8,9,7}

    注意:部分源程序已给出。

    请勿改动主函数main()和写函数writeDat()的内容。

    试题程序:

    include<stdio.h>

    jsValue(int a[10][9])

    {

    }

    main ()

    {

    int a[10] [9]={{6,8,9,1,2,5,4,7,3},

    {3,5,8,9,1,2,6,4,7},

    {8,2,1,9,3,5,4,6,7},

    {3,5,1,2,9,8,6,7,4},

    {4,7,8,9,1,2,5,3,6},

    {4,7,3,5,1,2,6,8,9},

    {9,1,3,5,8,6,2,4,7},

    {2,6,1,9,8,3,5,7,4},

    {5,3,7,9,1,8,2,6,4},

    {7,1,3,2,5,8,9,4,6},

    };

    int i,j;

    jsValue (a);

    for (i=0;i<10; i++)

    {

    for(j=0;j<9;j++)

    {

    printf("%d",a[i] [j]);

    if(j<=7) printf(",");

    }

    printf ("\n");

    }

    writeDat (a);

    }

    writeDat (int a[10] [9])

    {

    FILE *fp;

    int i,j;

    fp=fopen ("out90.dat", "w");

    for (i=0;i<10; i++)

    {

    for(j=0;j<9;j++)

    {

    fprintf (fp, "%d", a [i] [j] );

    if (j<=7) fprintf (fp, ", ");

    }

    fprintf (fp, "\n");

    }

    fclose (fp);

    }


    正确答案:void jsValue(int a[10][9]) { int valueijknum; for(i=0;i10;i++) { value=a[i][0]; /*将一行的第一个元素赋给value*/ for(j=0;j9;j++) if(a[i][j]value) /*若后面的数中有比第1个数据小的数*/ { num=a[i][j]; /*则把这个数取出赋给num*/ for(k=j;k>0;k--) /*将这个数据左侧的数依次向右移动*/ { a[i][k]=a[i][k-1]; } a[i][0]=num; /*再将这个数放在最左侧*/ } } } [解析] 本题考查的知识点如下: (1)二维数组的访问和数组元素的移动。 (2)循环结构和判断结构的嵌套使用。 数据存放在一个二维数组中每一行数为数据处理的基本单位。将第1个数取出依次和后面的数比较若后面的数中有比第1个数据小的数则将这个数取出。将这个数据左侧的数依次向右移动(包括第1个数)然后将这个数放在最左侧。扫描完一行后比第1个数小的数就都在第1个数的左侧而比它大的就在它的右侧。对数的扫描和移动均可以使用循环实现。再使用循环实现对每一行数据的访问。
    void jsValue(int a[10][9]) { int value,i,j,k,num; for(i=0;i10;i++) { value=a[i][0]; /*将一行的第一个元素赋给value*/ for(j=0;j9;j++) if(a[i][j]value) /*若后面的数中有比第1个数据小的数*/ { num=a[i][j]; /*则把这个数取出,赋给num*/ for(k=j;k>0;k--) /*将这个数据左侧的数依次向右移动*/ { a[i][k]=a[i][k-1]; } a[i][0]=num; /*再将这个数放在最左侧*/ } } } [解析] 本题考查的知识点如下: (1)二维数组的访问和数组元素的移动。 (2)循环结构和判断结构的嵌套使用。 数据存放在一个二维数组中,每一行数为数据处理的基本单位。将第1个数取出依次和后面的数比较,若后面的数中有比第1个数据小的数,则将这个数取出。将这个数据左侧的数依次向右移动(包括第1个数),然后将这个数放在最左侧。扫描完一行后,比第1个数小的数就都在第1个数的左侧,而比它大的就在它的右侧。对数的扫描和移动均可以使用循环实现。再使用循环实现对每一行数据的访问。

  • 第3题:

    设有初始序列(8,5,2,12,7,1,6,10,9,3,4,11),排序后产生新序列(4,5,2, 3,7,1,6,8,9,10,12,11),问采用的是下列哪一个排序算法一趟扫描的结果?( )

    A.堆排序

    B.初始步长为4的希尔排序

    C.二路归并排序

    D.以8为分界元素的快速排序


    正确答案:D
    解析:快速排序是对起泡排序的一种改进,其基本思想是:通过一趟排序将待排序记录n个成独立的两部分,其中一部分记录比关键字小,一部分比关键字大,再分别对这两部分记录进行同样的排序操作。

  • 第4题:

    ● 假设有 8 个记录,它的初始关键字序列为{5,7,3,8,2,9,1,4},用冒泡排序对它进行排序,第5次排序结果为 (44) 。

    (44)

    A. 5,3,7,2,8,1,4,9

    B. 2,1,3,4,5,7,8,9

    C. 3,2,5,1,4,7,8,9

    D. 1,2,3,4,5,7,8,9


    正确答案:B

  • 第5题:

    我国钢期货的交割月份为(  )。

    A.1、3、5、7、8、9、11、12月

    B.1、3、4、5、6、7、8、9、10、11月

    C.1、3、5、7、9、11月

    D.1—12月

    答案:D
    解析:
    我国螺纹钢标准合约的交割月份为1一12月,最后交易日为合约交割月份的15日(遇法定假日顺延),交割日期为最后交易日后连续5个工作日。

  • 第6题:

    若有以下数组a,数组元素:a[0]~a[9],其值为 9  4  12  8  2  10  7  5  1  3   该数组的元素中,数值最大的元素的下标值是()


    正确答案:2

  • 第7题:

    假定一个初始堆为(1, 5, 3, 9, 12, 7, 15, 10),则进行第一趟堆排序后得到的结果为()。

    • A、 3, 5, 7, 9, 12, 10, 15, 1
    • B、 3, 5, 9, 7, 12, 10, 15, 1
    • C、 3, 7, 5, 9, 12, 10, 15, 1
    • D、 3, 5, 7, 12, 9, 10, 15, 1

    正确答案:A

  • 第8题:

    若有以下数组a,数组元素:a[0]~a[9],其值为 9  4  12  8  2  10  7  5  1  3  该数组中下标最大的元素的值是()


    正确答案:3

  • 第9题:

    F12L413柴油机的发火顺序是()。

    • A、1-5-3-8-10-7-6-11-2-9-4-12
    • B、1-8-5-10-3-7-6-11-2-9-4-12
    • C、1-10-3-8-7-11-6-9-2-4-12-5
    • D、1-8-5-10-7-3-6-11-2-9-4-12

    正确答案:B

  • 第10题:

    单选题
    假定对元素序列(7, 3, 5, 9, 1, 12, 8, 15)进行快速排序,则进行第一次划分后,得到的左区间中元素的个数为()。
    A

     2

    B

     3

    C

     4

    D

     5


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

  • 第11题:

    单选题
    对下列四个序列进行快速排序,各以第一个元素为基准进行第一次划分,则在该次划分过程中需要移动元素次数最多的序列为()
    A

      1, 3, 5, 7, 9

    B

      9, 7, 5, 3, 1

    C

      5, 3, 1, 7, 9

    D

      5, 7, 9, 1, 3


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

  • 第12题:

    单选题
    假定对元素序列(7, 3, 5, 9, 1, 12)进行堆排序,并且采用小根堆,则由初始数据构成的初始堆为()。
    A

     1, 3, 5, 7, 9, 12

    B

     1, 3, 5, 9, 7, 12

    C

     1, 5, 3, 7, 9, 12

    D

     1, 5, 3, 9, 12, 7


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

  • 第13题:

    5,7,4,8,3,9,( ),2,-1,( )。

    A.8、9

    B.10、1

    C.10、13

    D.12、15


    正确答案:C
    数列较长可判断为分组数列,此数列两两一组,5+7=4+8=3+9=(10)+2=-1+(13)=12。故本题正确答案为C。

  • 第14题:

    下列程序的功能是:将一个正整数序列{K1, K2,…, K9}重新排列成一个新的序列。在新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面)。要求编写函数jsValue()实现以上功能,最后调用函数writeDat(),将新序列输出到文件out.dat中。说明:程序中已给出了10个序列,每个序列中有9个正整数,并存入数组a[10][9] 中,分别求出这10个新序列。例如:序列{6, 8, 9, 1, 2, 5, 4, 7, 3}重排后为{3, 4, 5, 2, 1, 6, 8, 9, 7}。部分源程序已给出。请勿改动主函数main() 和写函数writeDat() 的内容。#include<stdio.h>void jsValue(int a[10][9]){ } void main(){ int a[10][9]={{6,8,9,1,2,5,4,7,3} {3,5,8,9,1,2,6,4,7} {8,2,1,9,3,5,4,6,7} {3,5,1,2,9,8,6,7,4} {4,7,8,9,1,2,5,3,6} {4,7,3,5,1,2,6,8,9} {9,1,3,5,8,6,2,4,7} {2,6,1,9,8,3,5,7,4} {5,3,7,9,1,8,2,6,4} {7,1,3,2,5,8,9,4,6} }; int i,j; jsValue(a); for(i=0;i<10;i++){ for(j=0;j<9;j++) { printf("%d",a[i][j]); if(j<=7) printf(","); } printf("\n");}writeDat(a);}void writeDat(int a[10][9]){ FILE *fp; int i,j; fp=fopen("out.dat","w"); for(i=0;i<10;i++){ for(j=0;j<9;j++){ fprintf(fp,"%d",a[i][j]); if(j<=7) fprintf(fp,","); } fprintf(fp,"\n");} fclose(fp);}


    正确答案:参考试题解析
    【解析及答案】
    本题的任务是把排序函数jsValue() 补充完整。本题的处理过程是对数组a[10][9] 中的每行数据分别处理,然后再放置到原来的数组a[10][9] 中。求解时需要使用一个[10][9] 的临时数组b存放处理时的中间结果。数组a处理完以后,就用数组b的内容代替数组a的内容。对每行数据进行处理时,首先需要准备两个指示器nk,分别指向数组b中该行的开头和结尾。然后,反向扫描数组a中对应的行。如果碰到比该行第1个数据值大的元素,就将其放到指示器k指向的位置;如果碰到比其数据值小的元素,就将其放到指示器n指向的位置。处理完以后,还要移动指示器nk,使其定位在新的位置,以接收后面的数据。如果碰到和其数据值相等的元素,由题意可知,这样的元素在新数组中只允许出现1次,所以直接把这个元素放到指示器nk指向的位置即可,但不必移动指示器,否则该元素有可能出现多次。综上所述,完整的排序函数jsValue() 如下。
    jsvalue(int a[10][9])
    {
      int i,j,k,n,temp;
      int b[9]=0;
       for(i=0;i<10;i++)

        temp=a[i][0];
         k=8; 
        n=0;
        for(j=8,j>=0;j--)     
    {    
          if(temp<a[i][j]) 
              b[k--]=a[i][j];
          if(temp>a[i][j])  
              b[n++]=a[i][j];
          if(temp==a[i][j])  
              b[n]=temp;     /*也可以b[k]=a[i][j];*/
    }
        for(j=0;j<9;j++)
      {
          a[i][j]=b[j];
          b[j]=0;}
      }
    }

  • 第15题:

    对关键字序列(6,1,4,3,7,2,8,5)进行快速排序时,以第1个元素为基准的一次划分的结果为 ( )

    A.(5,1,4,3,6,2,8,7)

    B.(5,1,4,3,2,6,7,8)

    C.(5,1,4,3,2,6,8,7)

    D.(8,7,6,5,4,3,2,1)


    正确答案:C

  • 第16题:

    3,1,4,8;15,12,3,30;7,11,9,( )

    A.5
    B.9
    C.13
    D.27

    答案:D
    解析:
    第一步,项数较多,考虑多重数列。
    第二步,数列有十二项,且每四项有“;”隔开,优先考虑四四分组,分组情况为(3,1,4,8),(15,12,3,30),(7,11,9,所求项),观察发现8=3+1+4,30=15+12+3,规律为组内第四项等于前三项之和,则所求项为7+11+9=27。
    因此,选择D选项。

  • 第17题:

    设待排序序列为{10,18,4,3,6,12,1,9,15,8}请写出希尔排序每一趟的结果。增量序列为5,3,2,1。


    正确答案:初始:10,18,4,3,6,12,1,9,15,8
    d=5:10,1,4,3,6,12,18,9,15,8
    d=3:3,1,4,8,6,12,10,9,15,18
    d=2:3,1,4,8,6,9,10,12,15,18
    d=1:1,3,4,6,8,9,10,12,15,18

  • 第18题:

    假定对元素序列(7, 3, 5, 9, 1, 12, 8, 15)进行快速排序,则进行第一次划分后,得到的左区间中元素的个数为()。

    • A、 2
    • B、 3
    • C、 4
    • D、 5

    正确答案:B

  • 第19题:

    若有以下数组a,数组元素:a[0]~a[9],其值为   9  4  12  8  2  10  7  5  1  3  该数组可用的最小下标值是()


    正确答案:0

  • 第20题:

    对下列四个序列进行快速排序,各以第一个元素为基准进行第一次划分,则在该次划分过程中需要移动元素次数最多的序列为()

    • A、  1, 3, 5, 7, 9
    • B、  9, 7, 5, 3, 1
    • C、  5, 3, 1, 7, 9
    • D、  5, 7, 9, 1, 3

    正确答案:D

  • 第21题:

    道依茨柴油机BF12L513C各缸的发火顺序是()。

    • A、1-5-3-8-10-7-6-11-2-9-4-12
    • B、1-8-5-10-3-7-6-11-2-9-4-12
    • C、1-10-3-8-7-11-6-9-2-4-12-5
    • D、1-8-5-10-7-3-6-11-2-9-4-12

    正确答案:B

  • 第22题:

    单选题
    对序列{15,9,7,8,20,-1,4,} 用希尔排序方法排序,经一趟后序列变为{15,-l,4,8,20,9,7}则该次采用的增量是()
    A

    1

    B

    4

    C

    3

    D

    2


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

  • 第23题:

    问答题
    设待排序序列为{10,18,4,3,6,12,1,9,15,8}请写出希尔排序每一趟的结果。增量序列为5,3,2,1。

    正确答案: 初始:10,18,4,3,6,12,1,9,15,8
    d=5:10,1,4,3,6,12,18,9,15,8
    d=3:3,1,4,8,6,12,10,9,15,18
    d=2:3,1,4,8,6,9,10,12,15,18
    d=1:1,3,4,6,8,9,10,12,15,18
    解析: 暂无解析

  • 第24题:

    单选题
    假定一个初始堆为(1, 5, 3, 9, 12, 7, 15, 10),则进行第一趟堆排序后得到的结果为()。
    A

     3, 5, 7, 9, 12, 10, 15, 1

    B

     3, 5, 9, 7, 12, 10, 15, 1

    C

     3, 7, 5, 9, 12, 10, 15, 1

    D

     3, 5, 7, 12, 9, 10, 15, 1


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