网友您好, 请在下方输入框内输入要搜索的题目:

题目内容 (请给出正确答案)
阅读以下说明和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
更多 “阅读以下说明和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 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 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” 相关考题
考题 (15)下列排序方法中,( ) 方法的总的关键码比较次数与记录的初始排列状态无关。A)直接插入排序B)直接选择排序C)起泡排序D)快速排序

考题 在排序方法中,关键码比较次数与记录的初始排列无关的是A.Shell排序B.归并排序C.直接插入排序D.选择排序

考题 若待排序列已基本有序,要使它们完全有序,从关键码比较次数和移动次数考虑,应当使用的排序方法是( )。 A、归并排序B、直接插入排序C、直接选择排序D、快速排序

考题 下列排序方法中,哪一种方法的总的关键码比较次数与记录的初始排列状态无关?______。A.直接插入排序B.起泡排序C.快速排序D.直接选择排序

考题 下列排序方法中,哪一种方法总的关键码比较次数与记录的初始排列状态无关?( )A) 直接选择排序B) 直接插入排序C) 起泡排序D) 快速排序A.B.C.D.

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

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

考题 采用插入排序算法对n个整数排序,其基本思想是:在插入第i个整数时,前i-1个整数己经排好序,将第i个整数依次和第i-1, i-2, ...个整数进行比较,找到应该插入的位置。现采用插入排序算法对6个整数{5.2.4.6.1.3}进行从小到大排序,则需要进行(31)次整数之间的比较。对于该排序算法,输入数据具有(32)特点时,对整数进行从小到大排序,所需的比较次数最多。A.9B.10C.12D.13

考题 用直接插入排序方法对序列{15,11,9,10,13}进行排序,关键码比较次数是A.10B.8C.4D.9

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

考题 对于n个结点的序列,利用直接插入排序的方法总的关键码的比较次数约为A.nB.n2C.log2nD.n2/4

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

考题 对下列四种排序方法,在排序过程中关键码比较次数与记录的初始排列无关的方法是 ______。A.直接插入排序B.二分法插入排序C.快速排序D.归并排序

考题 采用插入排序算法对n个整数排序,其基本思想是:在插入第i个整数时,前i一1个整数已经排好序,将第i个整数依次和第i.,i-2,…个整数进行比较,找到应该插入的位置。现采用插入排序算法对6个整数{5 2,4,6,1,3}进行从小到大排序,则需要进行(31)次整数之间的比较。对于该排序算法,输入数据具有(32)特点时,对整数进行从小到大排序,所需的比较次数最多。A.9B.10C.12D.13(32)A.从小到大B.从大到小C.所有元素相同D.随机分布请帮忙给出每个问题的正确答案和分析,谢谢!

考题 (15)下列排序方法中,哪一种方法总的关键码比较次数与记录的初始排列状态无关?A)直接选择排序B)直接插入排序C)起泡排序D)快速排序

考题 采用插入排序算法对n个整数排序,其基本思想是:在插入第i个整数时,前i-1个整数已经排好序,将第i个整数依次和第i-1,i-2,…个整数进行比较,找到应该插入的位置。现采用插入排序算法对6个整数{5,2,4,6,1,3}进行从小到大排序,则需要进行( )次整数之间的比较。对于该排序算法,输入数据具有(请作答此空)特点时,对整数进行从小到大排序,所需的比较次数最多。A.从小到大 B.从大到小 C.所有元素相同 D.随机分布

考题 采用插入排序算法对n个整数排序,其基本思想是:在插入第i个整数时,前i-1个整数已经排好序,将第i个整数依次和第i-1,i-2,…个整数进行比较,找到应该插入的位置。现采用插入排序算法对6个整数{5,2,4,6,1,3}进行从小到大排序,则需要进行(请作答此空)次整数之间的比较。对于该排序算法,输入数据具有( )特点时,对整数进行从小到大排序,所需的比较次数最多。A. 9 B. 10 C. 12 D. 13

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

考题 采用插入排序算法对n个整数排序,其基本思想是:在插入第i个整数时,前i-1个整数己经排好序,将第i个整数依次和第i-1,i-2,...个整数进行比较,找到应该插入的位置。现采用插入排序算法对6个整数{5,2,4,6,1,3}进行从小到大排序,则需要进行( )次整数之间的比较。A.9 B.10 C.12 D.13

考题 在对10个记录的序列(9,35,19,77,2,10,53,45,27,68)进行直接插入排序时,当把第6个记录10 插入到有序表时,为寻找插入位置,元素间需比较()次。(按升序排序)

考题 排序算法中,从尚未排序序列中依次取出元素与已排序序列(初始为空)中的元素进行比较(要求比较次数尽量少),然后将其放入已排序序列的正确位置的方法是()A、折半插入排序B、直接插入排序C、归并排序D、选择排序

考题 在基于关键码比较的排序算法中,()算法在最坏情况下,关键码比较次数不高于O(nlog2n)。A、起泡排序B、直接插入排序C、二路归并排序D、快速排序

考题 在对一组元素(64,48,106,33,25,82,70,55,93)进行直接插入排序时,当进行到要把第7个元素70插入到已经排好序的子表时,为找到插入位置,需进行()次元素间的比较(指由小到大排序)。A、6B、2C、3D、4

考题 下列排序方法中,()方法的总的关键码比较次数与记录的初始排列状态无关。A、直接插入排序B、直接选择排序C、起泡排序D、快速排序

考题 问答题已知下列各种初始状态(长度为n)的元素,试问当利用直接插入排序进行排序时,至少需要进行多少次比较(要求排序后的记录由小到大顺序排列)? ⑴关键码从小到大有序(key1 key2 … keyn)。 ⑶奇数关键码顺序有序,偶数关键码顺序有序(key1 key3 …,key2key4…)。 ⑷前半部分元素按关键码顺序有序,后半部分元素按关键码顺序有序,即:(key1 key2 … keym,keym+1 keym+2 …)

考题 单选题下列排序方法中,()方法的总的关键码比较次数与记录的初始排列状态无关。A 直接插入排序B 直接选择排序C 起泡排序D 快速排序

考题 单选题在基于关键码比较的排序算法中,()算法在最坏情况下,关键码比较次数不高于O(nlog2n)。A 起泡排序B 直接插入排序C 二路归并排序D 快速排序