将两个各有N个元素的有序表归并成一个有序表,其最少的比较次数是()。【中科院计算所1998二、7(2
将两个各有N个元素的有序表归并成一个有序表,其最少的比较次数是()。【中科院计算所1998二、7(2分)】【中国科技大学1998二、7(2分)】
A.N
B.2N-1
C.2N
D.N-1
将两个各有N个元素的有序表归并成一个有序表,其最少的比较次数是()。【中科院计算所1998二、7(2分)】【中国科技大学1998二、7(2分)】
A.N
B.2N-1
C.2N
D.N-1
将两个各有N个元素的有序表归并成一个有序表,其最少的比较次数是()。
A.N
B.2N一1
C.2N
D.N一1
单链表
实验目的:
(1)熟练掌握线性表的单链式存储结构及在其上实现线性表的各种基本运算的方法。
(2)掌握和理解本实验中出现的一些基本的C语言语句。
(3)体会算法在程序设计中的重要性。
实验内容:
(1)设计一算法,逆置带头结点的动态单链表head。要求利用原表的结点空间,并要求用尽可能少的时间完成。
(2)设有两个按元素值递增有序的单链表A和B,编一程序将A表和B表归并成一个新的递增有序的单链表C(值相同的元素均保留在C表中),并要求利用原表的空间存放C。
给出将两个有序序列合并成一个有序序列的算法(用自然语言描述),然后分析该算法的基本模式特征点,并将该模式运用到多项式求和、两个文件合并以及多个队列合并应用中。
以下将ah,…am,和am+1…an,两个有序序列(它们相应的关键字值满足Kh≤Km,Km+1≤…Kn,)合并成一个有序序列Rh,…,Rn,(使其关键字值满足Kh,'≤…≤Kn,')。请分析算法,并在______上填充适当的语句。
void merge(list a,list R,int h,int m,int n)
{i=h;k=h;j=m+1;
while((i<m)&&(j<=n))
{ if(a[i].key<=a[i].key){R[k]=______;______;}
else{R[k]=______;______;}
k++;
}
while(i<=______){R[k]=a[i];i++;k++;)
while(j<=______){R[k]=a[j];j++;k++;}
}
此算法的执行时间为______。
二分法查找一个具有n个元素的有序表,其时间复杂度为()。
A.O(n)
B.O(n2)
C.O(log2n)
D.O(nlog2n)