一个递增有序表为R[0..11],采用折半查找方法进行查找,在一次不成功查找中,以下()是不可能的记录比较序列。
A.R[5]、R[2]、R[3]
B.R[5]、R[8]、R[10]
C.R[5]、R[8]、R[6]、R[7]
D.R[5]、R[8]、R[6]
A.R[5]、R[2]、R[3]
B.R[5]、R[8]、R[10]
C.R[5]、R[8]、R[6]、R[7]
D.R[5]、R[8]、R[6]
已知单链表L是一个递增有序表,试写一高效算法,删除表中值大于min且小于ma.x的结点(若表中有这样的结点),同时释放被删结点的空间,这里min和max是两个给定的参数。
A、O(n)
B、O(log2n)
C、O(n2)
D、O(nlog2n)
单链表
实验目的:
(1)熟练掌握线性表的单链式存储结构及在其上实现线性表的各种基本运算的方法。
(2)掌握和理解本实验中出现的一些基本的C语言语句。
(3)体会算法在程序设计中的重要性。
实验内容:
(1)设计一算法,逆置带头结点的动态单链表head。要求利用原表的结点空间,并要求用尽可能少的时间完成。
(2)设有两个按元素值递增有序的单链表A和B,编一程序将A表和B表归并成一个新的递增有序的单链表C(值相同的元素均保留在C表中),并要求利用原表的空间存放C。
顺序存储的线性表
实验目的:
(1)了解线性表的逻辑结构特征。
(2)熟练掌握线性表的顺序存储结构的描述方法,及在其上实现各种基本运算的方法。
(3)掌握和理解本实验中出现的一些基本的c语言语句。
(4)体会算法在程序设计中的重要性。
实验内容:
(1)将一顺序表a中的元素逆置。要求算法仅用一个辅助结点。
(2)求顺序表中的元素的最大值和次最大值。
(3)试设计一个算法,仅用一个辅助结点,实现将顺序表a中的结点循环右移k位的运算。
(4)设一顺序表中元素值递增有序。试设计一算法,将元素x插入到表中适当的位置上,并保持顺序表的有序性。
放被删结点空间,并分析你的算法的时间复杂度(注意,mink和maxk是给定的两个参变量,它们的值可以和表中的元素相同,也可以不同)。
以下将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++;}
}
此算法的执行时间为______。