更多“对于关键码序列18,30,35,10,46,38,5,40进行堆排序(假定堆的根结点为最小关键码),在初始建堆过程 ”相关问题
  • 第1题:

    对一组记录的关键码(54,36,72,15,40,38,91)进行堆排序时,初始化堆后,最后4个记录为 【】


    正确答案:(15,36,38,54)
    堆积排序(Heapsort)是指利用堆积树(堆)这种资料结构所设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素。先建一个“大顶堆”,即先选得一个关键字为最大的记录,然后与序列中最后一个记录交换,之后继续对序列中前 n-1 记录进行“筛选”,重新将它调整为一个“大顶堆”再将堆顶记录和第 n-1 个记录交换,如此反复直至排序结束。所谓“筛选”指的是对一棵左/右子树均为堆的完全二叉树,“调整”根结点使整个二叉树为堆。

  • 第2题:

    对于关键码序列18,30,35,10,46,38,5,40,进行堆排序(假定堆的根结点是最小关键码),在初始建堆过程中需进行的关键码交换次数为( )。

    A.2次

    B.3次

    C.4次

    D.5次


    正确答案:B
    解析:原始的堆如图1所示:因为n=8,所以n/2=4,所以从K4=10开始,第一次比较1040,不用交换:第二次比较35>5,两者相互交换,交换后如图2所示:第三次比较30>10,两者相互交换,交换后如图3所示;第四次比较18>5,两者相互交换,交换后如图4所示。所以交换的次数为3次。

  • 第3题:

    设有关键码序列(Q;G,M,Z,A,N,B,P,X,H,Y,S,T,L,K,E),采用堆排序法进行排序,经过初始建堆后关键码值B在序列中的序号是( )。

    A)1

    B)3

    C)7

    D)9


    正确答案:B
    建堆的算法:首先将要排序的所有关键码放到一棵完全二叉树的各个结点中(这时的二叉树不具备堆的特性),然后,从i=[n/2](n为结点的个数)的结点Ki开始,逐步把以K[n/2],K[n/2]-1,K[n/2]-2,..为根的子树排成堆,直到以K1为根的树排成堆,就完成了建堆过程。此题中,n=16,i=[16/2]=8,即从第8个结点开始,建堆完成后如下图:

    所以经过初始建堆后关键码值B在序列中的序号是3。

  • 第4题:

    设有关键码序列(O, G, M, Z, A, N, B, P, X, H, Y, S, T, L, K, E),要按关键码值递增的顺序进行排序,采用堆排序法进行,经过初始建堆后关键码值A在序列中的序号是______。


    正确答案:√
    1

  • 第5题:

    设有关键码序列(Q,G,M,Z,A,N,B,P,X,H,Y,S,T,L,K,E),采用堆排序法进行排序,经过初始建堆后关键码值A在序列中的序号是( )。

    A.1

    B.4

    C.8

    D.12


    正确答案:A