设数组A[n]中,A[n一2k+1..n一k]和A[n一k+1..n]中元素各自从小到大排好序,试设计一个算法使A[n一2
第1题
算法填空。[中国海洋大学2005四(8分)】 设n个数的数列存放在数组a[1..n](下标1~n)中,下列算法将变为一个堆,注意:本算法不是完整的堆排序算法,仅将a变为堆顶元素具有最大值的“大堆”,是初始堆。 void adjust(in a[],int 13.) {int i, j, 8,x:; for(i=n/2;i>=1;i—-) {s=i;x=a[s]; for(j=2*s;j<:n;j*=2) {if(j<11&&a[j]<a[j+1]) (
第2题
第3题
线性搜索算法如下:
Linear Search(A,x) //数组A[1..n],待查找对象x
1.for i←1 to ndo
2.if A[i]=x then return i //查找成功
3.return "no" //查找失败
设A的n个元素都不相同,x已在A中的概率为p(0≤p≤1),并且当x在A中时,x等于A的每一个元素的可能性相等.试分析算法的平均时间复杂度.
第5题
A.r-f
B. (n+f-r)% n
C. n+r-f
D. (n+r-f)% n
第7题
A.正确
B.错误
第8题
试将以下的源程序翻译成四元式形式的代码程序,并对其进行局部和循环优化(x,y都是10 X 20的数组,设数组每维的下限为1)。 FOR m=1 to 10 do FOR n=1 to 20 do x[m,n]=y[m,n]*5
第9题
T、对
F、错
第10题
以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数语第一个数兑换,把最大的数语最后一个数对换。请填空。 include <stdio.h> void f(int x[ ],int n) { int p0,p1,i,j,t,m; i=j=x[0]; p0=p1=0; for(m=0;m<n;m++) if(x[m]>i) {i=x[m];p0=m;} else if(x[m]<j) {j=x[m];p1=m; } t=x[p0];x[p0]=x[n-1];x[n-1]=t; t=x[p1];x[p1]=[11] ; [12]=t; main() { int a[10],u; for(u=0;u<10;u++) scanf("%d",&a[u]); f(a,10); for(u=0;u<10;u++) printf("%d",a[u]); printf("\n"); }