早教吧作业答案频道 -->数学-->
若有序列{2,5,6,10,15,21,26,30,56,78},若用折半查找法赵30,则需要比几次
题目详情
若有序列{2,5,6,10,15,21,26,30,56,78},若用折半查找法赵30,则需要比
几次
几次
▼优质解答
答案和解析
a[10] = {2,5,6,10,15,21,26,30,56,78}
第一次,比较 a[(0+9)/2] == 30 =>a[4] = 15 < 30 ;
第二次,比较 a[(4+1+9)/2] == 30 => a[7] = 30 == 30 ,所以第二次就可以找到了;
折半法就是先用下标是 i = (0+n)/2 的值(相当于首+尾的和除二)与需要查找的数x相比(n是数组的最大下标,例子里面是9),
如果 x < a[i] ,就用下标是 i = (0+i-1)/2 的值(相当于首+(i-1)的和除二)与需要查找的数x相比;
如果 x == a[i] ,下标 i 就是需要找的那个数的下标了;
如果 x > a[i] ,就用下标是 i = (i+1+9)/2 的值(相当于(i+1)+尾的和除二)与需要查找的数x相比;
以此类推.直到 x == a[i] ,或者是首>尾的时候就结束了.
第一次,比较 a[(0+9)/2] == 30 =>a[4] = 15 < 30 ;
第二次,比较 a[(4+1+9)/2] == 30 => a[7] = 30 == 30 ,所以第二次就可以找到了;
折半法就是先用下标是 i = (0+n)/2 的值(相当于首+尾的和除二)与需要查找的数x相比(n是数组的最大下标,例子里面是9),
如果 x < a[i] ,就用下标是 i = (0+i-1)/2 的值(相当于首+(i-1)的和除二)与需要查找的数x相比;
如果 x == a[i] ,下标 i 就是需要找的那个数的下标了;
如果 x > a[i] ,就用下标是 i = (i+1+9)/2 的值(相当于(i+1)+尾的和除二)与需要查找的数x相比;
以此类推.直到 x == a[i] ,或者是首>尾的时候就结束了.
看了 若有序列{2,5,6,10,...的网友还看了以下:
某市居民自来水收费标准如下:每户每月用水4吨以下的,每吨1.8元.当超过4吨时,当超过4吨时,超过部 2020-03-30 …
,一个应用题,超难,有两桶油,第一桶与第二桶重量比是5:8,从第一桶取出26千克放入第二桶后,第一 2020-05-14 …
,一个应用题,超难,有两桶油,第一桶与第二桶重量比是5:8,从第一桶取出26千克放入第二桶后,第一 2020-05-14 …
根据26×53=1378,直接写出下面各题得数.26×5.3=0.26×53=2.6×5.3=13 2020-06-14 …
小红和小芳都积攒了一些零用钱.她们所攒钱的比是5:3,在"支援灾区"捐款活动中小红捐26元,小芳捐 2020-07-01 …
算一算,比一比5分之1*35分之3/39分之4*29分之8/212分之5*26分之5/2你发现了什 2020-07-30 …
某市居民天然气收费标准如下每户每月用气四立方米一下(含四方米)每立方米1点8元当超过四方米时超出部分 2020-11-07 …
有一堆煤,用去26.5吨,剩下的煤比用去煤的2倍少1.5吨,这堆煤原来一共有多少吨 2020-11-10 …
小红和小芳都积攒了一些零用钱.她们所攒钱的比是5比3,在“支援灾区”捐款活动中小红捐了26元,小芳捐 2020-11-10 …
某市居民自来水收费标准如下:每户每月用水4吨以下,每吨1.8元.当超过4吨时,超过部分每吨3元.某月 2020-11-29 …