对n个关键码构成的序列采用直接插入排序法进行升序排序的过程是:在插入第i个关键码Ki时,其前面的i-1个关键码己排好序,因此令Ki与Ki-1、Ki-2、...,依次比较,多到K1为止,找到插入位置并移动相关元素后将Ki插入有序子序列的适当位置,完成本趟(即第i-1趟)排序。以下关于直接插入排序的叙述中,正确的是()。A.若原关键码序列已经升序排序,则排序过程中关键码间的比较次数最少B.若原关键码序列已经降序排序,则排序过程中关键码间的比较次数最少C.第1趟完成后即可确定整个序列的最小关键码D.第1趟完成后

题目

对n个关键码构成的序列采用直接插入排序法进行升序排序的过程是:在插入第i个关键码Ki时,其前面的i-1个关键码己排好序,因此令Ki与Ki-1、Ki-2、...,依次比较,多到K1为止,找到插入位置并移动相关元素后将Ki插入有序子序列的适当位置,完成本趟(即第i-1趟)排序。以下关于直接插入排序的叙述中,正确的是()。

A.若原关键码序列已经升序排序,则排序过程中关键码间的比较次数最少

B.若原关键码序列已经降序排序,则排序过程中关键码间的比较次数最少

C.第1趟完成后即可确定整个序列的最小关键码

D.第1趟完成后即可确定整个序列的最大关键码


相似考题
更多“对n个关键码构成的序列采用直接插入排序法进行升序排序的过程是:在插入第i个关键码Ki时,其前面的i-1个关键码己排好序,因此令Ki与Ki-1、Ki-2、...,依次比较,多到K1为止,找到插入位置并移动相关元素后将Ki插入有序子序列的适当位置,完成本趟(即第i-1趟)排序。以下关于直接插入排序的叙述中,正确的是()。A.若原关键码序列已经升序排序,则排序过程中关键码间的比较次数最少B.若原关键码序列已经降序排序,则排序过程中关键码间的比较次数最少C.第1趟完成后即可确定整个序列的最小关键码D.第1趟完成后”相关问题
  • 第1题:

    对一个由n个关键码组成的序列,借助排序过程选出其中最大的关键码,要求关键码比 较次数和移动次数最少,应当使用下列( )排序方法。A.归并排序B.直接插入排序C.直接选择排序D.快速排序


    正确答案:C
    第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R{1}~R[n-1]中选取最小值,与R[2]交换,....,

  • 第2题:

    若待排序序列已基本有序,要使它完全有序,从关键码的比较次数和移动次数考虑,应当采用的排序方法是( )。

    A.直接插入排序

    B.快速排序

    C.直接选择排序

    D.归并排序


    正确答案:A

  • 第3题:

    对一个由n个关键码组成的序列,借助排序过程选出其中最大的关键码,要求关键码比较次数和移动次数最少,应当使用下列哪种排序方法?

    A.归并排序

    B.直接插入排序

    C.直接选择排序

    D.快速排序


    正确答案:C
    解析:直接选择排序第一趟扫描就可以把最大的关键码找出来(不必等到排序结束)其它几种排序方法都必须等到排序完成才能找到最大关键码。

  • 第4题:

    设待排序关键码序列为(33,18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为分界元素的快速排序法,第一趟排序完成后关键码33被放到了第______个位置

    A.3

    B.5

    C.7

    D.9


    正确答案:B
    解析:快速排序的基本思想是:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继续进行排序,以达到整个序列有序。在上述序列中,比关键码33小的元素有4个,因此第一趟排序完成后关键码33被放到了第5个位置。

  • 第5题:

    对一个由n关键码组成的序列,借助排序过程选出其中最大的关键码,要求关键码比较次数和移动次数最少,应当使用下列哪种排序方法?

    A.归并排序

    B.直接插入排序

    C.直接选择排序.

    D.快速排序


    正确答案:C
    解析:直接选择排序第一趟扫描就可以把最大的关键码找出来(不必等到排序结束)其他几种排序方法都必须等到排序完成才能找到最大关键码。

  • 第6题:

    对下列四种排序方法,在排序过程中关键码比较次数与记录的初始排列无关的方法是 ______。

    A.直接插入排序

    B.二分法插入排序

    C.快速排序

    D.归并排序


    正确答案:D

  • 第7题:

    设待排序关键码序列为(25,18,9,33,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为分界元素的快速排序法,第一趟排序完成后关键码33放到的位置是

    A.3

    B.5

    C.7

    D.9


    正确答案:D

  • 第8题:

    待排序的关键码序列为(15,20,9,30,67,65,45,90),要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码15被放到第( )个位置。

    A)2

    B)3

    C)4

    D)5


    正确答案:A
    选择排序的基本思想是扫描整个线性表,从中选出最小的元素,将它交换到表的最前面,然后对剩下的子表采用同样的方法,直到予表为空。所以第一趟排序后,将选出最小的元素9放在第一个位置,元素15则放在第二个位置。

  • 第9题:

    对n个关键码构成的序列采用直接插入排序法进行升序排序的过程是:在插入第i个关键码Ki时,其前面的i-1个关键码己排好序,因此令Ki与Ki-1、Ki-2、...,依次比较,最多到K1为止,找到插入位置并移动相关元素后将Ki插入有序子序 列的适当位置,完成本趟(即第i-1趟)排序。以下关于直接插入排序的叙述中,正确的是( )。

    A. 若原关键码序列已经升序排序,则排序过程中关键码间的比较次数最少
    B.若原关键码序列已经降序排序,则排序过程中关键码间的比较次数最少
    C.第1趟完成后即可确定整个序列的最小关键码
    D.第1趟完成后即可确定整个序列的最大关键码

    答案:A
    解析:

  • 第10题:

    设待排序关键码序列为(25,18,9,33,67,82,53,95,12,70),要按关键码值递增的顺序进行排序,采取以第一个关键码为分界元素的快速排序法,第一趟排序完成后关键码95被放到第几个位置?()

    • A、7
    • B、8
    • C、9
    • D、10

    正确答案:B

  • 第11题:

    在基于关键码比较的排序算法中,()算法在最坏情况下,关键码比较次数不高于O(nlog2n)。

    • A、起泡排序
    • B、直接插入排序
    • C、二路归并排序
    • D、快速排序

    正确答案:C

  • 第12题:

    单选题
    在基于关键码比较的排序算法中,()算法在最坏情况下,关键码比较次数不高于O(nlog2n)。
    A

    起泡排序

    B

    直接插入排序

    C

    二路归并排序

    D

    快速排序


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

  • 第13题:

    设待排序关键码序列为(24,19,32,43,38,6,13,22),要按关键码值递增地顺序进行排序,采取以第一个关键码为分界元素的快速排序法,第一趟完成后关键码43被放到第( )个位置。


    正确答案:B
    快速排序是起泡排序的改进。在快速排序中,任取一个记录,以它为基准用交换的方法将所有的记录分成两部分,关键码值比它小的在一部分,关键码值比它大的在另一部分,再分别对两个部分实施上述过程,一直重复到排序完成。本题中第一趟完成后的记录是(22,19,13,6,24,38,43,32)。可见43移向到第7个位置。

  • 第14题:

    待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70),如要按关键码值递增的顺序排序,并采取以第一个关键码为基准元素的快速排序法,则第一趟排序后关键码33被放到第( )个位置。

    A.3

    B.5

    C.7

    D.9


    正确答案:B
    暂无解析,请参考用户分享笔记

  • 第15题:

    对于n个结点的序列,利用直接插入排序的方法总的关键码的比较次数约为

    A.n

    B.n2

    C.log2n

    D.n2/4


    正确答案:D
    解析:对于n个结点的序列,利用直接插入排序的方法总的关键码的比较次数约为n2/4。

  • 第16题:

    若待排序序列已基本有序,要使它完全有序,从关键码比较次数和移动次数考虑,应当使用的排序方法是 ______。

    A.归并排序

    B.直接插入排序

    C.直接选择排序

    D.快速排序


    正确答案:B

  • 第17题:

    若待排序序列已基本有序,要使它完全有序,为减少关键码的比较次数和移动次数,应当采用的排序方法是( )。

    A.直接插入排序

    B.快速排序

    C.希尔排序

    D.冒泡排序


    正确答案:A
    解析:直接插入排序是将一个记录插入到已经有序的顺序表中,形成一个新的记录数增加1的有序表。

  • 第18题:

    用直接插入排序方法对序列{15,11,9,10,13}进行排序,关键码比较次数是________。

    A.10

    B.8

    C.4

    D.9


    正确答案:B
    解析:直接插入排序的基本算法是:当插入第i(i>=1)个对象时,前面的v[0],V[1]……V[i-1]已经排好序,这时,用V[i]的关键码与V[i-1),V[i-2],……的关键码顺序进行比较,找到插入位置即将v[i]插入,原来位置上的对象则向后移。本题中的i只能取1:第1趟(i=1):11和15比较,插入:11,15,9,10,13第2趟(i=2):9和11比较,插入:9,11,15,10,13第3趟(i=3):10和9比较,不插入,再和11比较,插入:9,10,11,15,13第4趟(i=4):13和9比较,不插入,和10比较,不插入,和11比较,不插入,和15比较,插入,排序完成。共比较8次。

  • 第19题:

    待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码33被放到第( )个位置。

    A.3

    B.5

    C.7

    D.9


    正确答案:B

  • 第20题:

    阅读以下说明和C代码,填写程序中的空(1)~(5),将解答写入答题纸的对应栏内。【说明】直接插入排序是一种简单的排序方法,具体做法是:在插入第i个关键码时,k1,k2,…,ki-1已经排好序,这时将关键码ki依次与关键码ki-1,ki-2,…,进行比较,找到ki应该插入的位置时停下来,将插入位置及其后的关键码依次向后移动,然后插入ki。例如,对{17,392,68,36}按升序作直接插入排序时,过程如下:第1次:将392(i=1)插入有序子序列{17},得到{17,392};第2次:将68(i=2)插入有序子序列{17,392},得到{17,68,392};第3次:将36(i=3)插入有序子序列{17,68,392},得到{17,36,68,392},完成排序。下面函数 insertSort用直接插入排序对整数序列进行升序排列,在main函数中调用insertSort并输出排序结果。 【C代码】void insert Sort(int data[],int n)/*用直接插入排序法将data[0]~ data[n-1]中的n个整数进行升序排列*/{ int i,j; int tmp; for(i=1; i=0 && data[j] > tmp;j----) //查找插入位置并将元素后移 (2); (3) =tmp; //插入正确位置 }/*if*/ }/*for*/}/*insertSort*/ int main(){ int *bp,*ep; int n,arr[]={17,392,68,36,291,776,843,255}; n = sizeof(arr) / sizeof(int); insertSort(arr,n); bp= (4) ; ep = arr+n; for( ;bp=0 && data[j] > tmp;j----) //查找插入位置并将元素后移 (2); (3) =tmp; //插入正确位置 }/*if*/ }/*for*/}/*insertSort*/ int main(){ int *bp,*ep; int n,arr[]={17,392,68,36,291,776,843,255}; n = sizeof(arr) / sizeof(int); insertSort(arr,n); bp= (4) ; ep = arr+n; for( ;bp

    答案:
    解析:
    (1)data[i-1](2)data[j+1]=data[j](3)data[j+1](4)arr(5)*bp
    【解析】

    直接插入排序法是将关键码插入已经排好的序列中,因此将data[i]插入序列data[0]~data[i-1]中,此时序列data[0]~data[i-1]已经按照升序排列好,而data[i]应插入位置前的数据应该比data[i]小,而插入位置后的数据应比data[i]大,在if语句中判断data[i]=data[i-1],则将data[i]插入到d[i-1]后;若data[i]=0&&data[j]>tmp;j--)循环,从data[i-2]开始向前逐一比较,即j从i-2开始向0循环,若data[j]>tmp,则进行for循环,此时需要将data[j]即data[i-2]的值后移,使得data[i-1]=data[i-2],即data[j+1]=data[j],然后j--,用tmp与data[j]进行比较,如果tmp< data[j],则说明tmp应放在data[j]之前,那么data[j]需要继续往后移动。所以data[j+1]= data[j]。 当该循环结束时,此时有2种情况:(1)j=-1<0,此时data[0]>tmp;应使得data[0]后移,即data[1]=data[0],data[0]=tmp,因此第3空填写data[j+1];(2)data[j]<=tmp;此时需要将tmp插入到data[j]后,即data[j+1]=tmp。 在main函数中调用insertSort函数并输出数组元素,在for(; bp

  • 第21题:

    对n个记录进行非递减排序,在第一趟排序之后,一定能把关键码序列中的最大或最小元素放在其最终排序位置上的排序算法是( )

    A.冒泡排序
    B.快速排序
    C.直接插入排序
    D.归并排序

    答案:A
    解析:
    本题考察数据结构与算法的基础知识。冒泡排序Bubble sort:原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束。

  • 第22题:

    当输入序列已经基本有序时,起泡排序需要比较关键码的次数,比快速排序还要少。


    正确答案:正确

  • 第23题:

    设待排序关键码序列为(25,18,9,33,67,82,53,95,12,70),要按关键码值递增的顺序进行排序,采取以第一个关键码为分界元素的快速排序法,第一趟完成后关键码33被放到了第()个位置。


    正确答案:9