对关键字序列(6,1,4,3,7,2,8,5)进行快速排序时,以第1个元素为基准的一次划分的结果为()A.(5,1,4,
对关键字序列(6,1,4,3,7,2,8,5)进行快速排序时,以第1个元素为基准的一次划分的结果为 ()
A.(5,1,4,3,6,2,8,7)
B.(5,1,4,3,2,6,7,8)
C.(5,1,4,3,2,6,8,7)
D.(8,7,6,5,4,3,2,1)
对关键字序列(6,1,4,3,7,2,8,5)进行快速排序时,以第1个元素为基准的一次划分的结果为 ()
A.(5,1,4,3,6,2,8,7)
B.(5,1,4,3,2,6,7,8)
C.(5,1,4,3,2,6,8,7)
D.(8,7,6,5,4,3,2,1)
种解决冲突的方法构造哈希表,并分别求出等概率下查找成功时和查找失败时的平均查找长度ASLsucc和ASLunsucc。①线性探测法;②链地址法。
阅读下列对正整数关键字序列L操作的算法,并回答问题:
(1)设L=(28,19,27,49,56,12,10,25,20,50),写出f33(L,4)的返回值;
(2)简述函数f33的功能。
int Partition(SeqList*L,int low,int high);
//对L[low…high]做划分,返回基准记录的位置,并使左部的关键字
//都小于或等于基准记录的关键字,右部的关键字都大于基准记录的关键字
int f33(SeqList L,int k){
int low,high,pivotpos;
low=1;
high=L.length;
if(k<low||k>high)
return-1;
do {
pivotpos=Partition(&L,low,high);//调用快速排序的划分算法
if(pivotpos<k)
low=pivotpos+1;
else if(pivotpos>k)
high=pivotpos-1;
}while(pivotpos!=k);
return L.data[pivotpos];
}
A.20,76,35,23,80,54
B.20,54,23,80,35,76
C.80,23,35,76,20,54
D.20,35,23,80,54,76
已知有一关键字序列为(372,81,437,96,205,732,821,634,572,495,264),如果采用归并排序方法对此序列进行升序排列,请给出每一趟的排序结果。
以下将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++;}
}
此算法的执行时间为______。