现在的位置: 首页 > 综合 > 正文

Return to Data Structures–二分查找(折半查找)

2013年04月12日 ⁄ 综合 ⁄ 共 1644字 ⁄ 字号 评论关闭

一、              顺序表特点:查找要从第一个元素开始,逐个访问元素。表中第一个元素起始位置确定后,则顺序表中的任一数据元素都可随机存取。

二、              折半查找(二分查找):要求所查找顺序表中的元素按值或关键字前后有序描述,方法是先确定待查元素所在范围(区间),然后逐步缩小范围直到找到或没有找到该元数为止。

三、    实际应用举例:

①、二分查找在图像处理中的应用

在图像处理中,常常将图像数据分块存放。而为了使邻近图像块的数据集中存放,我们常使用一种树状的分块方案:即将整个图像平面作为树的根结点,四块四块分下去。分块后图像及其编号方式。

分块直方图

0

1

4

5

2

3

6

7

8

9

12

13

10

11

14

15

由分块直方图知:图形是以“4”为单位逐步细分的,因此,每次分块中,图形的中心坐标总是第(N * 3/4)块的左上顶点坐标(N为总块数)。所以,我们以该顶点为中心将欲分块区划分为四个区,如下图:

 

0

 

1

2

x0,y0      3

结论:

if(x < x0 && y < y0)  x,y1区;

else if ( x > = x0 && y < y0 ) x,y0区;

else if (x < x0 && y > = y0) x,y 2区;

else x,y 3区;

根据分块方式及存储顺序可得,0区的所有块编号在全部编号中的位置为0~N * 1/41区在N * 1/4 ~ N * 2/42区所有编号块的位置为N * 2/4 ~ N * 3/43区所有块N * 3/4 ~ N。判断出目标点所在区后,以该区为范围,迭代查找。这样经过几次后,就可得出目标点的块编号。

算法执行中,若对平面分块数为N,则只须判断log4N次即可得出目标点的块号。

 

参考文献:信息工程学院基础部 奚玲 《二分查找法在图像处理中的运用》

 

基于位的二分查找:

数据在内存中是以二进制形式存放的。对有符号数而言,最高位为0表示正数,最高位为了表示负数。由于二分查找的基础是在有序的数据中查找,所以不妨设数据是从小到大排列的。具体算法如下:

(1)       判断符号位,统计负数个数n1

(2)       初始化p(用来指定被比较的二进制位的位置,初始值为L-2)。判断待查找数Z3符号位,若为1,则设i  = 0, j = n1 – 1;否则,设 i=n1,j = N – 1.转(3)。

(3)       i < =j,k = (i + j)/2,转(4);否则转(6)。

(4)       比较za[k]的第p位。若相同,p = p- 1,直到p -1,找到,查找结结束,否则转到(5)。

(5)       z的符号位为1且第p位为1,则i =k +1,p =L-2;

否则若z的符号位为1且第p位为0,则j = k – 1,p = L -2;

否则若z的符号位为0且第p位为1,则i =k+1,p=L-2;

否则j =k-1,p=L-2.  转(3)。

6)没有找到,查找结束。

结论:基于位的二分查找算法适用于大规模整数构成的集合,是直接利用数据的二进制位信息进行比较,无需对数据进行二进制与十进制转换。

 

参考文献:南京信息工程大学 成亚平

 

四、二分查找步骤:(查找元素30)

 

3

5

7

8

12`

20

24

27

38

50

78

low                                                      mid                                                 high

Mid = (1 + 11)/2=6;

3

5

7

8

12`

20

24

27

38

50

78

                                            low         mid         high

3

5

7

8

12`

20

24

27

38

50

78

                                           low/mid high

3

5

7

8

12`

20

24

27

38

50

78

                                                    low/mid/high

3

5

7

抱歉!评论已关闭.