1、对于A[0..10]有序表{12,18,24,35,47,50,62,83,90,115,134}
(1)用二分查找法查找 90时,需进行多少次查找可确定成功?
(2)当查找47时需进行多少次查找可确定成功?
(3)查找100时,需进行多少次查找才能确定不成功?
(4)求成功和不成功时的平均查找长度。
(5)构造对于这个序列的判定树,并再求成功和不成功时的平均查找长度。
解:
(1)用二分查找法查找90时,先找到50,因90大于50,向50的右子树进行查找,找到90.一共进行2次查找。(50-90)
(2)先找到50,因47小于50,向50的左子树进行查找,找到24,47大于24,向24的右子树查找,找到35,又找到47.。共进行4次查找。(50-24-35-47)
(3)先找到50,100大于50,向50的右子树进行查找。找到90,向90的右孩子查找,找到115,找不到。共进行3次查找。(50-90-115)
(4)
2、现给出一个分块有序的数据表,每块中元素的个数s=8,其中的数据有:
22,4,23,11,20,2,15,13,30,45,26,34,29,35,26,36,55,98,56,74,61,90,80,96,127,158,116,114,128,113,115,102,184,211,243,188,187,218,195,210,279,307,492,452,408,361,421,399,856,523,704,703,697,535,534,739
(1)构造索引表,并画出索引存储结构;
(2)请描述查找61的过程,需要多少次比较;
(3)请描述查找739的过程,需要多少次比较;
(4)请描述查找200的过程,经过多少次比较后才能确定找不到。
解:
(1)
(2)在索引表中进行折半查找(158-45-98),共3次;在以98为最大值的块中进行顺序查找(55-98-56-74-61),共5次。所以查找61共需要8次比较。
(3)在索引表中进行折半查找(158-492-856),共3次;在以856为最大值的块中进行顺序查找(856-523-704-703-697-535-534-739),共8次。所以查找739共需要11次比较。
(4)在索引表中进行折半查找(158-492-243),共3次;在以243为最大值的块中进行顺序查找(184-211-243-188-187-218-195-210),共8次。所以查找61共需要11次比较。
3、将整数序列{43,52,75,24,10,38,67,55,63,60}中的数依次插入到一棵空的二叉排序树中,构造出相应的二叉排序树,要求用图形给出构造过程。
4、将整数序列{43,52,75,24,10,38,67,55,63,60}依次插入到一棵空的平衡二叉树中,试构造相应的平衡二叉树,要求用图形给出构造过程。