给有序表折半查找找到一个元素的比较次数
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/20 02:35:28
![给有序表折半查找找到一个元素的比较次数](/uploads/image/f/6740098-34-8.jpg?t=%E7%BB%99%E6%9C%89%E5%BA%8F%E8%A1%A8%E6%8A%98%E5%8D%8A%E6%9F%A5%E6%89%BE%E6%89%BE%E5%88%B0%E4%B8%80%E4%B8%AA%E5%85%83%E7%B4%A0%E7%9A%84%E6%AF%94%E8%BE%83%E6%AC%A1%E6%95%B0)
inta[n];L=0;R=n;intmid;while(Lm)L=mid;elseif(a[mid]
(log以2为底的(n+1))然后再减1好像是这个,把12带进去,log向下取整.
ASLsucc=(1*1+2*2+4*3+3*4)/10=29/10ASLunsucc=(5*3+6*4)/11=39/11
这个不就是数组吗,a[15]#includemain(){inti,num,a[15];for(i=0;i
8510349161219=(4*6+5*4)/(6+4)3.4.9.12.19对应的孩子就是查找不成功的,总共10个,每个的查找程度又不同,3.4.9的是4,12.19的是5
只给函数行么用P的自己翻译下functionfind(k:longint):longint;varleft,right,mid:longint;beginleft:=1;right:=n;whilel
等会就给你发答案5分钟内再问:嗯要的非常感谢!嗯是说排序前原数组中的位置哈谢谢再答:#include<stdio.h>main(){int i,j,n,a[15],t,l=0,h
#include#includeintmain(void){intary[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};intnum=16;intpos;intl
C语言编的#includemain(){inta[15];intn,i,l=1,h=15;for(i=0;i
#includeintmain(){inta[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};intbegin,end,midlle,x;printf("%d",a
等概率下,折半查找的平均查找长度公式为:ASL={[(n+1)/n]*log2^(n+1)}-1
#includeintf(inta[],intn,intstart,intend){inti=start+(end-start)/2;if(start>end)return-1;if(a[i]==n)
37=1*1+2*2+3*4+4*5故其次数为37/12.画个二叉树就可以了再问:能不能解释一下这些数字是什么意思?再答:权最小即可,树的层数是乘号左边的数
第一个算填空?else就是没找到情况了啊随便写什么比如说"cannotfindthisnumber""nosuchnumber""无此数"第二个算什么?程序没什么问题,输出上可以修改一下printf(
1次.一共8个数(0-7)第一次比较3位置处((0+7)/2)的数,发现相等后,直接返回,所以比较一次.
就是一半,即是n/2
你数一下最后的叶子结点应该有而没有的孩子是几个
用快速排序嘛voidsortQ(int*p,intb,inte){\x05if(b\x05{\x05\x05intm=b;\x05\x05std::cout再问:这个方法我们还没学到才能不能用一些简单
log(n),以2为底.再问:查找不成功的平均查找长度呢?