单选题

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

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

查看答案
该试题由用户236****36提供 查看答案人数:40590 如遇到问题请联系客服
正确答案
该试题由用户236****36提供 查看答案人数:40591 如遇到问题请联系客服
热门试题
对n个关键码构成的序列采用简单选择排序法进行排序的过程是:第一趟经过n-1次关键码之间的比较,确定出最小关键码在序列中的位置后,再将其与序列的第一个关键码进行交换,第二趟则在其余的n-1个关键码中进行n-2次比较,确定出最小关键码的位置后,再将其与序列的第二个关键码进行交换……以此类推,直到序列的关键码从小到大有序排列。在简单选择排序过程中,关键码之间的总比较次数为(  )。 对有n个记录的表进行直接插入排序,在最坏情况下需要比较()次关键字。 阅读以下说明和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<n;i++){ if(data[i]<data[i-1]){ //将data[i]插入有序子序列data[0]~data[i-1] tmp=data[i]; //备份待插入的元素 data[i]=(1); for(j=i-2;j>=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<ep; bp++) //按升序输出数组元素 printf("%d ", (5) ); return 0;阅读以下说明和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<n;i++){ if(data[i]<data[i-1]){ //将data[i]插入有序子序列data[0]~data[i-1] tmp=data[i]; //备份待插入的元素 data[i]=(1); for(j=i-2;j>=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<ep; bp++) //按升序输出数组元素 printf("%d ", (5) ); return 0;} 对顺序表中的n个记录进行直接插入排序,在最好情况下需要比较________次关键字 若对n个元素进行直接插入排序,则进行第i趟排序过程前,有序表中的元素个数为 ______。 中国大学MOOC: 对同一待排序列分别进行折半插入排序和直接插入排序,两者之间可能的不同之处是( )。 中国大学MOOC: 对有n个记录的表进行直接插入排序,在最好情况下需比较( )次关键字。 直接插入排序是不稳定的排序方法。 因为接插入排序是稳定的,而Shell 排序是调用若干趟直接插入排序,所以也是稳定的。 中国大学MOOC: n个记录直接插入排序所需的记录最小比较次数是 ( ) 直接插入排序的时间复杂度为() 直接插入排序的时间复杂度是() ( )排序又被称为缩小增量排序,是对直接插入排序方法的改进。 直接插入排序和简单选择排序两种排序算法中,关键字的比较次数与初始序列无关的是() 希尔排序是直接插入排序的一种改进方法 将5个不同的数据进行直接插入排序,至多需要比较次数为() n个元素的数序进行直接插入排序,在最好情况下移动元素的个数是(①),关键字比较的次数是(②)() 在待排序序列的初始排列完全有序时,只有直接插入排序的时间性能最好 设有一组初始关键字序列为(),则第3趟直接插入排序结束后的结果的是。 若对n个元素进行直接插入排序,则进行任一趟排序的过程中,为寻找插入位置而需要的时间复杂度为()
购买搜题卡会员须知|联系客服
会员须知|联系客服
关注公众号,回复验证码
享30次免费查看答案
微信扫码关注 立即领取
恭喜获得奖励,快去免费查看答案吧~
去查看答案
全站题库适用,可用于聚题库网站及系列App

    只用于搜题看答案,不支持试卷、题库练习 ,下载APP还可体验拍照搜题和语音搜索

    支付方式

     

     

     
    首次登录享
    免费查看答案20
    登录成功
    首次登录已为您完成账号注册,
    可在【个人中心】修改密码或在登录时选择忘记密码
    账号登录默认密码:手机号后六位