网友您好, 请在下方输入框内输入要搜索的题目:
题目内容
(请给出正确答案)
插入排序中找插入位置的操作可以通过二分查找法来实现。设计一个用二分查找法来找插入位置的改进的插入排序算法。
参考答案和解析
Void sort(datatype a[n]) /*n为元素个数数组下标从1开始到n结束*/ { for(i=2;i<=n;i++) {low=1;high=i一1; /*lowhigh分为当前元素上、下界*/ a[0]=a[i]; while(10w<=high) {mid=(10w+high)/2; switch {a[0]<=a[mid]:hiqh=mid一1;/*修改上界*/ a[0]>a[mid]:low=mid+1; /*修改下界*/ } for(j=i一1;j>=mid;j一一) a[j+1]=a[j]; a[mid]=a[i]; } } } 插入排序的基本思想是:每趟从无序区间中取出一个元素,再按键值大小括入到前面的有序区中。对于有序区,当然可以用二分查找来确定插入位置。
更多 “插入排序中找插入位置的操作可以通过二分查找法来实现。设计一个用二分查找法来找插入位置的改进的插入排序算法。” 相关考题
考题
在索引顺序表中查找一个元素,可用的且最快的方法是()。
A.用顺序查找法确定元素所在块,再用顺序查找法在相应块中查找B.用顺序查找法确定元素所在块,再用二分查找法在相应块中查找C.用二分查找法确定元素所在块,再用顺序查找法在相应块中查找D.用二分查找法确定元素所在块,再用二分查找法在相应块中查找
考题
●试题一阅读下列算法说明和算法,将应填入(n)处的语句写在答题纸的对应栏内。【说明】为了减少直接插入排序关键字的比较次数,本算法使用了二分(折半)插入法对一个无序数组R[1..n]进行排序。排序思想是对一个待插入元素,先通过二分法(折半)找到插入位置,后移元素后将该元素插入到恰当位置(假设R[]中的元素互不相同)。【算法】1.变量声明X:DataTypei,j,low,high,mid,R0..n2.每循环一次插入一个R[i]循环:i以1为步长,从2到n,反复执行①准备X-R[i]; (1) ;high-i-1;②找插入位置循环:当 (2) 时,反复执行(3)若X.keyR[mid].key则high-mid-1否则 (4)③后移循环:j以-1为步长,从 (5) ,反复执行R[j+1]-R[j]④插入R[low]-X3.算法结束
考题
下列说法中错误的是:()A.插入排序某些情况下复杂度为O(n)B.排序二叉树元素查找的复杂度可能为O(n)C.对于有序列表的排序最快的是快速排序D.在有序列表中通过二分查找的复杂度一定是O(log2n)
考题
阅读下列算法说明和算法,将应填入(n)处的语句写在对应栏内。【说明】为了减少直接插入排序关键字的比较次数,本算法使用了二分(折半)插入法对一个无序数组R[1..n]进行排序。排序思想是对一个待插入元素,先通过二分法(折半)找到插入位置,后移元素后将该元素插入到恰当位置。(假设R[]中的元素互不相同)[算法]1.变量声明X: Data Typei,j,low, high,mid,r:0..n2.每循环一次插入一个R[i]循环:i以1为步长,从2到n,反复执行。(1)准备X←R[i];(1); high←i-1;(2)找插入位置循环:当(2)时,反复执行。(3)若X.key<R[mid].key则high←mid-1;否则 (4)(3)后移循环:j以-1为步长,从(5),反复执行。R[j+1]←R[j](4)插入R[low]←X3.算法结束
考题
单选题插入排序是一种简单实用的工具,在对数组排序时,我们可能用二分查找,对要插入的元素快速找到在已经排好元素序列中的位置。下面的描述中正确的是()。A
二分查找的时间复杂度为O(lgN),因此排序的时间复杂度为O(N*lgN)B
二分查找的时间复杂度为O(N),因此排序的时间复杂度为O(N*lgN)C
二分查找的时间复杂度为O(lgN),因此排序的时间复杂度为O(N*N)D
二分查找的时间复杂度为O(N),因此排序的时间复杂度为O(N*N)
考题
单选题数据结构与算法中,希尔排序又称为()。A
缩小增量排序B
二分插入排序C
多路归并排序D
锦标赛排序
热门标签
最新试卷