| | | | | |

Binary Search -- the idea

A vector:
AB CB CF DA DD DF DG EE FE FG FJ FL HK LA LB LM LX LZ MZ PA PX QQ QZ ST SX SZ TA TX WX WZ YA YX
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Search value: t = PB
Search range: [0,32) = {0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31}
Compare middle element with t: mid = 32/2 = 16
                               v[16] ? t
                                  LX < PB => t can only be in [17,32) = {17 ... 31}
New search range: [17,32) = {17 18 19 20 21 22 23 24 25 26 27 28 29 30 31}
Compare middle element with t: mid = 17 + (32-17)/2 = 24
                               v[24] ? t
                                  SX > PB => t can only be in [17,24) = {17 ... 23}
New search range: [17,24) = {17 18 19 20 21 22 23}
Compare middle element with t: mid = 17 + (24-17)/2 = 20
                               v[20] ? t
                                  PX > PB => t can only be in [17,20) = {17 ... 19}
New search range: [17,20) = {17 18 19}
Compare middle element with t: mid = 17 + (20-17)/2 = 18
                               v[18] ? t
                                  MZ < PB => t can only be in [19,20) = {19}
New search range: [19,20) = {19}
Compare middle element with t: mid = 19 + (20-19)/2 = 19
                               v[19] ? t
                                  PA < PB => t can only be in [20,20) = {}
New search range: [20,20) = {} 
Note size of range is 0 - range is empty

Return false (not found)

See the entire search process in a Stillmation1
See a similar process for the found case in another Stillmation2


| | Top of Page | 3. Introduction to Algorithm Analysis - 6 of 23