在待排序的一组关键码序列 k1,k2,…,,kn 中,若 ki和kj相同,且在排序前ki先于kj, 那么排序后,如果ki和kj的相对次序保持不变,ki仍领先于kj,则称此类排序为稳定的。若在排序后的序列中有可能出现kj领先于ki的情形,则称此类排序为不稳定的。( )是稳定的排序方法。A. 快速排序 B. 简单选择排序 C. 堆排序 D. 冒泡排序

题目

在待排序的一组关键码序列 k1,k2,…,,kn 中,若 ki和kj相同,且在排序前ki先于kj, 那么排序后,如果ki和kj的相对次序保持不变,ki仍领先于kj,则称此类排序为稳定的。若在排序后的序列中有可能出现kj领先于ki的情形,则称此类排序为不稳定的。( )是稳定的排序方法。

A. 快速排序 B. 简单选择排序 C. 堆排序 D. 冒泡排序


相似考题
更多“在待排序的一组关键码序列 k1,k2,…,,kn 中,若 ki和kj相同,且在排序前ki先于kj, 那么排序 ”相关问题
  • 第1题:

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

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

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

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

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


    正确答案:A

  • 第2题:

    下列叙述中正确的是( )。

    A.堆排序是一种稳定的内部排序方法

    B.在排序过程中,若出现元素向逆序向移动的现象,那么这样的排序是不稳定的

    C.折半插入排序是一种稳定的内部排序方法

    D.待排序列基本有序时选用快速排序,能够最好地发挥这种排序方法的优势


    正确答案:C

  • 第3题:

    对于n个元素的关键字序列K1,K2,…,Kn,若有Ki≤K2i≤且Ki≤2i+1(i=1,2,…,[n/2],2i+1≤n),则称其为小根堆。以下关于小根堆及其元素关系的叙述中,错误的是( )。

    A.关键字序列K1,K2,…,Kn呈非递减排序时一定为小根堆

    B.小根堆中的序列K1,K2,K4…,K2j(2j≤n)一定为非递减序列

    C.小根堆中元素K2i与K2i+1(2i≤n,2i+1≤n)之间的大小关系不能确定

    D.小根堆的最后一个元素一定是序列的最大元素


    正确答案:D
    解析:小根堆中元素比它本身的根小,它和它的兄弟没有大小关系。

  • 第4题:

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

    A.归并排序

    B.直接插入排序

    C.直接选择排序

    D.快速排序


    正确答案:B

  • 第5题:

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

    A.直接插入排序

    B.快速排序

    C.希尔排序

    D.冒泡排序


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

  • 第6题:

    对一待排序序列分别进行直接插入排序和简单选择排序,若待排序序列中有两个元 素的值相同,则(63) 保证这两个元素在排序前后的相对位置不变。

    A.直接插入排序和简单选择排序都可以

    B.直接插入排序和简单选择排序都不能

    C.只有直接插入排序可以

    D.只有简单选择排序可以


    正确答案:C
    本题考查简单排序算法特点。直接插入排序的思想是:是将n个待排序的元素由一个有序表和一个无序表组成,开始时有序表中只包含一个元素。排序过程中,每次从无序表中取出第一个元素,将其插入到有序表中的适当位置,使有序表的长度不断加长,完成排序过程。例如,对序列21,48,21*,9进行直接插入排序,21和21*.的相对位置在排序前后可保持,如下所示:第一趟得到有序子序列:21.48第二趟得到有序子序列:21,21*,48第三趟得到有序序列:9,21,21*,48简单选择排序的过程是:第一趟在n个记录中选取最小记录作为有序序列的第一个记录;第二趟在n-l个记录中选取最小记录作为有序序列的第二个记录;第i趟在n-i+l个记录中选取最小的记录作为有序序列中的第一个记录,直到将序列排列有序。对序列21,48,21*,9进行简单选择排序,过程如下:第一趟选出最小元素,将其交换至t号位,序列为:9,48.21*,21第二趟选出次小元素,将其交换至2号位,序列为:9.21*.48,21第三趟选出第三小元素,将其交换至3号置,序列为:9,21*.21,48从该例可知.简单选择排序过程不能保证序码相同的两个元素在排序前后的相对位置不变,直接插入排序则可以。

  • 第7题:

    在待排序的一组关键码序列k1,k2,…,kn中,若ki和kj相同,且在排序前ki领先于kj,那么排序后,如果ki和kj的相对次序保持不变,ki仍领先于kj,则称此类排序为稳定的。若在排序后的序列中有可能出现kj领先于ki的情形,则称此类排序为不稳定的。( )是稳定的排序方法。

    A.快速排序
    B.简单选择排序
    C.堆排序
    D.冒泡排序

    答案:D
    解析:
    本题考查数据结构基础知识。
    冒泡排序是稳定的排序方法,因为元素向前或向后交换时,都是在相邻的位置进行,因此可以保证关键码相同的元素不作交换。
    快速排序主要通过划分实现排序,在划分序列时,基本思路是将序列后端比基准元素小者移到前端,将序列前端中比基准元素大者移到后端,元素往前移动或往后移动时会跨越中间的若干个元素,这样关键码相同的元素的相对位置就可能改变,所以快速排序是不稳定的排序方法。
    简单选择排序、堆排序的过程中,同样存在元素移动时会跨越若干个元素的情况,所以也是不稳定的排序方法。

  • 第8题:

    阅读以下说明和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

  • 第9题:

    非空二叉排序树的定义是:若根结点具有左子树,则左子树中所有结点的关键码均小于根结点的关键码:若根结点具有右子树,则右子树中所有结点的关键码均大于根结点的关键码;左、右子树也是二叉排序树。由此可知,在一个二叉排序树中( )。

    A.从根结点到任何一个叶子的路径上,结点的关键码序列呈递增排序
    B.从根结点到任何一个叶子的路径上,结点的关键码序列呈递减排序
    C.同层次结点从左向右排序,结点的关键码序列呈递增排序
    D.同层次结点从左向右排序,结点的关键码序列呈递减排序

    答案:C
    解析:
    本题考查二叉排序树基本概念。 某二叉排序树如下图所示。

    显然,在二叉排序树中,同层次的就结点从左至右呈递增排列。

  • 第10题:

    如果待排序序列中两个数据元素具有相同的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的,()就是不稳定的排序方法。

    • A、起泡排序
    • B、归并排序
    • C、Shell排序
    • D、直接插入排序
    • E、简单选择排序

    正确答案:C,E

  • 第11题:

    设有键值序列(k1,k2,…,kn),当i>n/2时,任何一个子序列(ki,ki+1,…,kn)一定是堆。


    正确答案:正确

  • 第12题:

    判断题
    设有键值序列(k1,k2,…,kn),当i>n/2时,任何一个子序列(ki,ki+1,…,kn)一定是堆。
    A

    B


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

  • 第13题:

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

    A.直接插入排序

    B.快速排序

    C.直接选择排序

    D.归并排序


    正确答案:A

  • 第14题:

    堆是一个键值序列{k1,k2,……kn),对i=1,2…,|n/2|,满足(48)。

    A.ki<k2i+1<k2i

    B.ki≤k2i≤k2i+1

    C.ki≤k2i 且ki≤k2i+1(2i+1≤n)

    D.ki≤k2i或ki≤k2i+1(2i+1≤n)


    正确答案:C
    解析:本题考查堆的定义。在数据结构中,堆的定义如下:n个元素的序列{k1,k2,…,kn)当且仅当满足关系ki≤k2i且ki≤k2i+1或者kik2i且ki≤k2i+1(2i+1≤n)时,才称为堆。满足关系ki≤k2i且ki≤k2i+1的是小顶堆,满足关系kik2i且kik2i+1的是大顶堆。

  • 第15题:

    在每一趟排序过程中,都将待排序序列中最大关键字选出来,并将它从待排序序列中剔除,继续对剩余元素进行同样操作的排序方法,这种排序方法称为( )。

    A.基数排序

    B.堆排序

    C.起泡排序

    D.选择排序


    正确答案:B
    解析:若将堆看成一个完全二叉树对应的序列,则完全二叉树中所有非终端结点的值均不大于(不小于)其左右孩子结点的值。堆排序每次都选出最大或最小的结点。

  • 第16题:

    若待排序序列中元素非常多,而且它们的排列是完全无序的,那么最好选用下列排序方法中的______。

    A.冒泡排序

    B.简单选择排序

    C.直接插入排序

    D.快速排序


    正确答案:D

  • 第17题:

    若要求对大小为n的数组进行排序的时间复杂度为O(nlog2n),且是稳定的(即如果待排序的序列中两个数据元素具有相同的值,在排序前后它们的相对位置不变),则可选择的排序方法是( )。

    A.快速排序 B.归并排序 C.堆排序 D.冒泡排序


    正确答案:B

  • 第18题:

    ● 如果待排序序列中两个元素具有相同的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的。 (41) 是稳定的排序方法,因为这种方法在比较相邻元素时,值相同的元素并不进行交换。

    (41)

    A. 冒泡排序

    B. 希尔排序

    C. 快速排序

    D. 简单选择排序


    正确答案:A

  • 第19题:

    用某排序方法对一个关键码序列进行递增排序时,对于其中关键码相同的元素,若该方法可保证在排序前后这些元素的相对位置不变,则称该排序方法是稳定的。以下关于排序方法稳定性的叙述中,正确的是( )。

    A.冒泡排序和简单选择排序都是稳定的排序方法
    B.冒泡排序是稳定的排序方法,简单选择排序不是
    C.简单选择排序是稳定的排序方法,冒泡排序不是
    D.冒泡排序和简单选择排序都不是稳定的排序方法

    答案:B
    解析:

  • 第20题:

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

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

    答案:A
    解析:

  • 第21题:

    若要求对大小为n的数组进行排序的时间复杂度为,且是稳定的(即如果待排序的序列中两个数据元素具有相同的值,在排序前后它们的相对位置不变),则可选择的排序方法是( )

    A.快速排序
    B.归并排序
    C.堆排序
    D.冒泡排序

    答案:B
    解析:
    常见的排序方法的基本情况如图所示,满足时间复杂度且是稳定的方法只有归并排序最符合,

  • 第22题:

    在待排序的记录集中,存在多个具有相同键值的记录,若经过排序,这些记录的相对次序仍然保持不变,称这种排序为稳定排序


    正确答案:正确

  • 第23题:

    单选题
    如果待排序序列中两个数据元素具有相同的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的。()就是不稳定的排序方法。
    A

    起泡排序

    B

    归并排序

    C

    Shell排序

    D

    直接插入排序


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