插入排序是一种简单实用的工具,在对数组排序时,我们可能用二分查找

题目

插入排序是一种简单实用的工具,在对数组排序时,我们可能用二分查找,对要插入的元素快速找到在已经排好元素序列中的位置。下面的描述中正确的是()。

  • A、二分查找的时间复杂度为O(lgN),因此排序的时间复杂度为O(N*lgN)
  • B、二分查找的时间复杂度为O(N),因此排序的时间复杂度为O(N*lgN)
  • C、二分查找的时间复杂度为O(lgN),因此排序的时间复杂度为O(N*N)
  • D、二分查找的时间复杂度为O(N),因此排序的时间复杂度为O(N*N)
参考答案和解析
正确答案:C
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

若有以下程序段: …… int a[]={4,0,2,3,1},i,j,t; for(i=1;i=0 && t>a[j]) {a[j+1]=a[j];j--;} a[j+1]=t; } …… 则该程序段的功能是( )。

A.对数组a进行插入排序(升序)

B.对数组a进行插入排序(降序)

C.对数组a进行选择排序(升序)

D.对数组a进行选择排序(降序)


参考答案B

第2题:

用折半查找方式查找N个元素的数组,当查找成功时,其递归执行程序时递归调用的最大次数是(11)。

A.

B.

C.

D.


正确答案:D
解析:折半查找法每次将序列划分成两个部分,故最差情况下查找成功的递归调用次数是。

第3题:

在索引顺序表中查找一个元素,可用的且最快的方法是()。

A.用顺序查找法确定元素所在块,再用顺序查找法在相应块中查找

B.用顺序查找法确定元素所在块,再用二分查找法在相应块中查找

C.用二分查找法确定元素所在块,再用顺序查找法在相应块中查找

D.用二分查找法确定元素所在块,再用二分查找法在相应块中查找


参考答案:C

第4题:

下列数据结构中,能用二分法进行查找的是( )。A.顺序存储的有序线性表B.线性链表

下列数据结构中,能用二分法进行查找的是( )。

A.顺序存储的有序线性表

B.线性链表

C.二叉链表

D.有序线性链表


正确答案:A
二分查找只适用于顺序存储的有序表。此处所说的有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)的。选项A)正确。

第5题:

用二分法插入排序方法进行排序,被排序的表(或序列)应采用的数据结构是______。

A.单链表

B.数组

C.双向链表

D.散列表


正确答案:B
解析:二分法插入排序只能采用顺序存储,算法是稳定的。而4个答案中只有数组才是顺序存储。

第6题:

下列数据结构中,能用二分法进行查找的是( )。 A.顺序存储的有序线性表B.线性链表SXB

下列数据结构中,能用二分法进行查找的是( )。

A.顺序存储的有序线性表

B.线性链表

C.二叉链表

D.有序线性链表


正确答案:A
A。【解析】二分法查找只适用于顺序存储的有序线性表,对于顺序存储的非有序线性表和线性链表,都只能采用顺序查找。

第7题:

对有序数组{5,13,19,21,37,56,64,75,88,92,100}进行二分查找,等概率的情况下查找成功的平均查找长度(平均比较次数)是()。

A、35/11

B、34/11

C、33/11

D、32/11


参考答案:C

第8题:

(4)排序时计算机程序设计中一种重要操作,常见的排序方法有插入排序、和选择排序。


正确答案:交换排序
【解析】排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序。

第9题:

数组是一种数据结构,对数组通常进行的两种基本操作是(40)。

A.插入和删除

B.插入和赋值

C.查找和修改

D.查找和删除


正确答案:C
解析:n维数组是一种“同构”的数据结构,即它的每个数据元素类型相同,结构一致。它是线性表在维数上的扩充,也就是线性表中的元素又是一个线性表。应当注意的是数组不能进行整体的运算,只能对单个数组元素进行操作。因此对数组通常进行的两种基本操作是查找和修改。

第10题:

第四题 阅读以下说明、C函数和问题,回答问题1和问题2将解答填入答题纸的对应栏内。
【说明】
当数组中的元素已经排列有序时,可以采用折半查找(二分查找)法查找一个元素。下面的函数biSearch(int r[],int low,int high,int key)用非递归方式在数组r中进行二分查找,函数biSearch_rec(int r[],int low,int high,int key)采用递归方式在数组r中进行二分查找,函数的返回值都为所找到元素的下标;若找不到,则返回-1。

【C函数1】
int biSearch(int r[],int low,int high,int key)
//r[low..high] 中的元素按非递减顺序排列
//用二分查找法在数组r中查找与key相同的元素
//若找到则返回该元素在数组r的下标,否则返回-1
{
int mid;
while((1)) {
mid = (low+high)/2 ;
if (key ==r[mid])
return mid;
else if (key (2);
else
(3);
}/*while*/
return -1;
}/*biSearch*/

【C 函数 2】
int biSearch_rec(int r[],int low,int high,int key)
//r[low..high]中的元素按非递减顺序排列
//用二分查找法在数组r中查找与key相同的元素
//若找到则返回该元素在数组r的下标,否则返回-1
{
int mid;
if((4)) {
mid = (low+high)/2 ;
if (key ==r[mid])
return mid;
else if (key return biSearch_rec((5),key);
else
return biSearch_rec((6),key);
}/*if*/
return -1;
}/*biSearch_rec*/ 问题:4.1 (12分)
请填充C函数1和C函数2中的空缺,将解答填入答题纸的对应栏内。 问题:4.2 (3分)
若有序数组中有n个元素,采用二分查找法查找一个元素时,最多与( )个数组元素进行比较,即可确定查找结果。
(7)备选答案:
A.[log2(n+1)] B.[n/2] C.n-1 D.n


答案:
解析:
low<=high
(2)high=mid-1
(3)low=mid+1
(4)low<=high
(5)low,mid-1
(6)mid+1,high
(7)A
【解析】

本题考察折半查找。二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果xa[n/2],则只要在数组a的右半部搜索x。
总共有n个元素,渐渐跟下去就是n,n/2,n/4,....n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数。

更多相关问题