分塊查找法怎么計(jì)算次數(shù)?
我舉其他的一組例子。我們對(duì)一維數(shù)組中存放的元素 15 23 38 47 55 62 88 95 102 123 這十個(gè)數(shù)用二分法查找元素 95 要用到二叉樹(shù)構(gòu)建的方法. 如果查找數(shù)組元素個(gè)數(shù)是偶數(shù)n=10,那就將(n+1)/2=5.5,這里有向上取整和向下取整兩種方法,我用向下取整這種方法解釋下。5.5向下取整就是5,所以數(shù)組的第五個(gè)元素 55 作為二叉樹(shù)的根節(jié)點(diǎn).這時(shí)數(shù)組分為了兩堆.15 23 38 47和 62 88 95 102 123.還是同樣的方法15 23 38 47 這一堆的中間元素是(4+1)/2=2.5向下取整就是元素23,而62 88 95 102 123這一堆本來(lái)就是奇數(shù),所以直接將95作為他們的中間元素,此時(shí)的左邊一堆的中間元素 23 和右邊一堆的中間元素 95分別作為剛剛原數(shù)組中間元素55這個(gè)根節(jié)點(diǎn)的左子樹(shù)和右子樹(shù)。然后又將元素分成了 15(以23作為中間元素的左邊一堆)和38 47(以23作為中間元素的右邊一堆) 和62 88(以95作為中間元素的左邊一堆) 和102 123(以95作為中間元素的右邊一堆)這四堆。分別取四堆的中間元素,15 、38、62、102.其中15和38分別作為節(jié)點(diǎn)23的左、右子樹(shù),而62和102作為節(jié)點(diǎn)95的左、右子樹(shù)。然后就該是八堆了.但是15只有一個(gè)元素所以他就只是葉子節(jié)點(diǎn)了,38 47取走38后只剩47所以47作為節(jié)點(diǎn)38的子樹(shù)寄葉子節(jié)點(diǎn),右邊62 88取走62后剩88作為62的葉子節(jié)點(diǎn),102 123取走102后只有123作為他的葉子節(jié)點(diǎn)。現(xiàn)在要查找95這個(gè)元素.第一次訪問(wèn)根節(jié)點(diǎn)55,然后第二就可以訪問(wèn)根節(jié)點(diǎn)的右子樹(shù)95節(jié)點(diǎn)了.所以只要兩次就可以了.