Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
20 views36 pages

Binary Search Explained

The document describes binary search, an efficient algorithm for finding a target value within a sorted list. It works by repeatedly dividing the search space in half and determining which half of the list to search next based on whether the target value is greater or less than the value at the midpoint. This process continues until either the target value is found or the search space is narrowed to zero. Pseudocode and an example are provided to demonstrate how binary search iteratively homes in on the location of the target value.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPSX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views36 pages

Binary Search Explained

The document describes binary search, an efficient algorithm for finding a target value within a sorted list. It works by repeatedly dividing the search space in half and determining which half of the list to search next based on whether the target value is greater or less than the value at the midpoint. This process continues until either the target value is found or the search space is narrowed to zero. Pseudocode and an example are provided to demonstrate how binary search iteratively homes in on the location of the target value.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPSX, PDF, TXT or read online on Scribd
You are on page 1/ 36

Binary Search

By Huma Imad
Example 1
Binary Search

• Prerequisite is that the list is already sorted

• Binary Search is similar to searching a word in a dictionary


By Huma Imad

[1] 30
Initialization
First

[2] 45
Found ←FALSE
[3] 53 SearchFailed ← FALSE
First ← 1
[4] 79 Last ← Maxitems II set boundaries of search area
// First and Last hold the index values
[5] 86

Last [6] 95
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
First [1] 30
THEN
Found ← TRUE
[2] 45 ELSE
IF First >= Last
(1+6) /2 is 3.5
THEN (1+6) DIV 2 is 3
Middle [3] 53 SearchFailed ← TRUE
ELSE
[4] 79
IF List[Middle] > Searchitem

[5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
Last [6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 79
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
First [1] 30
THEN
Found ← TRUE
[2] 45 ELSE
IF First >= Last IF List[3] = 79
THEN Is FALSE
Middle [3] 53 SearchFailed ← TRUE
ELSE
[4] 79
IF List[Middle] > Searchitem

[5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
Last [6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 79
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
First [1] 30
THEN
Found ← TRUE
[2] 45 ELSE
IF First >= Last IF List[3] > 79
THEN Is FALSE
Middle [3] 53 SearchFailed ← TRUE
ELSE
[4] 79
IF List[Middle] > Searchitem

[5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
Last [6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 79
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
[1] 30
THEN
Found ← TRUE
[2] 45 ELSE
IF First >= Last IF List[3] > 79
THEN Is FALSE
Middle [3] 53 SearchFailed ← TRUE
ELSE
First [4] 79
IF List[Middle] > Searchitem

[5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
Last [6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 79
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
[1] 30
THEN
Found ← TRUE
[2] 45 ELSE
IF First >= Last (4 + 6) /2 is 5
THEN (4 + 6) DIV 2 is 5
[3] 53 SearchFailed ← TRUE
ELSE
First [4] 79
IF List[Middle] > Searchitem

Middle [5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
Last [6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 79
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
[1] 30
THEN
Found ← TRUE
[2] 45 ELSE
IF First >= Last IF List[5] = 79 is FALSE
THEN
[3] 53 SearchFailed ← TRUE
ELSE
First [4] 79
IF List[Middle] > Searchitem

Middle [5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
Last [6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 79
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
[1] 30
THEN
Found ← TRUE
[2] 45 ELSE
IF First >= Last
IF List[5] > 79 is TRUE
THEN
[3] 53 SearchFailed ← TRUE
ELSE
First [4] 79
IF List[Middle] > Searchitem

Middle [5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
Last [6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 79
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
[1] 30
THEN
Found ← TRUE
[2] 45 ELSE
IF First >= Last
THEN Last ← 5-1
[3] 53 SearchFailed ← TRUE
ELSE

Last First [4] 79


IF List[Middle] > Searchitem

Middle [5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
[6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 79
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
[1] 30
THEN
Found ← TRUE
[2] 45 ELSE
IF First >= Last
THEN (4+4) DIV 2 is 4
[3] 53 SearchFailed ← TRUE
ELSE
Middle Last First [4] 79
IF List[Middle] > Searchitem

[5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
[6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 79
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
[1] 30
THEN
Found ← TRUE
[2] 45 ELSE
IF First >= Last
THEN IF List[4] = 79 is TRUE
[3] 53 SearchFailed ← TRUE
ELSE
Middle Last First [4] 79
IF List[Middle] > Searchitem

[5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
[6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 79
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
[1] 30
THEN
Found ← TRUE
[2] 45 ELSE
IF First >= Last
THEN This will exit the loop
[3] 53 SearchFailed ← TRUE
ELSE
Middle Last First [4] 79
IF List[Middle] > Searchitem

[5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
[6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 79
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
[1] 30
THEN
Found ← TRUE
[2] 45 ELSE
IF First >= Last Found is TRUE
THEN This will exit the loop
[3] 53 SearchFailed ← TRUE
ELSE
Middle Last First [4] 79
IF List[Middle] > Searchitem

[5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
[6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 79
[1] 30
IF Found = TRUE
[2] 45 THEN

[3] 53
OUTPUT Middle II output position where item was found
ELSE
OUTPUT "Item not present in array"
Middle Last First [4] 79 END IF

[5] 86

[6] 95

OUTPUT Item Found at


index 4
Assume
Searchitem ← 79
Found ←FALSE
SearchFailed ← FALSE
First ← 1
By Huma Imad
Last ← Maxitems

WHILE NOT Found AND NOT SearchFailed


[1] 30 Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
THEN
[2] 45 Found ← TRUE
ELSE
IF First >= Last
[3] 53 Complete THEN
SearchFailed ← TRUE
code at a ELSE
glance
[4] 79 IF List[Middle] > Searchitem

THEN II must be in first half


[5] 86 Last ← Middle - 1 II move upper boundary
ELSE II must be in second half

[6] 95 First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
IF Found = TRUE
THEN

Assume OUTPUT Middle II output position where item was found


ELSE
Searchitem ← 79 OUTPUT "Item not present in array"
END IF
Example 2
Item not found
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
First [1] 30
THEN
Found ← TRUE
[2] 45 ELSE
IF First >= Last
THEN
Middle [3] 53 SearchFailed ← TRUE
ELSE
[4] 79
IF List[Middle] > Searchitem

[5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
Last [6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 42
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
First [1] 30
THEN
Found ← TRUE
[2] 45 ELSE
Last
IF First >= Last
THEN
Middle [3] 53 SearchFailed ← TRUE
ELSE
[4] 79
IF List[Middle] > Searchitem

[5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
[6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 42
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
Middle First [1] 30
THEN
Found ← TRUE
[2] 45 ELSE
Last
IF First >= Last
THEN
[3] 53 SearchFailed ← TRUE
ELSE
[4] 79
IF List[Middle] > Searchitem

[5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
[6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 42
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
Middle [1] 30
THEN
Found ← TRUE
[2] 45 ELSE
First Last
IF First >= Last
THEN
[3] 53 SearchFailed ← TRUE
ELSE
[4] 79
IF List[Middle] > Searchitem

[5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
[6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 42
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
[1] 30
THEN
Found ← TRUE
[2] 45 ELSE
Middle First Last
IF First >= Last
THEN
[3] 53 SearchFailed ← TRUE
ELSE
[4] 79
IF List[Middle] > Searchitem

[5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
[6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 42
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
[1] 30
THEN
Found ← TRUE
[2] 45 ELSE
Middle First Last
IF First >= Last
THEN
[3] 53 SearchFailed ← TRUE
ELSE
[4] 79
IF List[Middle] > Searchitem

[5] 86 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
[6] 95 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


ENDIF
ENDIF
ENDIF
ENDWHILE
Assume
Searchitem ← 42
WHILE NOT Found AND NOT SearchFailed

By Huma Imad Middle ← (First+ Last) DIV 2 II find middle of current search area
IF List [Middle] = Searchitem
THEN
[1] 30 Found ← TRUE
ELSE
IF First >= Last
Last [2] 45 THEN
Middle First
SearchFailed ← TRUE
ELSE
[3] 53
IF List[Middle] > Searchitem

[4] 79 THEN II must be in first half


Last ← Middle - 1 II move upper boundary
[5] 86 ELSE II must be in second half

First ← Middle+ 1 II move lower boundary


[6] 95 ENDIF
ENDIF
ENDIF
ENDWHILE
IF Found = TRUE
THEN

OUTPUT Middle II output position where item was found


Assume ELSE
Searchitem ← 42 OUTPUT "Item not present in array"
END IF
Example 3
Summary
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
First [1] 30 IF List [Middle] = Searchitem
THEN
[2] 32 Found ← TRUE
ELSE
IF First >= Last
[3] 36 THEN
SearchFailed ← TRUE
[4] 39 ELSE

Search IF List[Middle] > Searchitem


area Middle [5] 45
THEN II must be in first half

[6] 53 Last ← Middle - 1 II move upper boundary


ELSE II must be in second half
[7] 79
First ← Middle+ 1 II move lower boundary
ENDIF
[8] 86 ENDIF
ENDIF
[9] 95 ENDWHILE
Assume Last
Searchitem ← 36
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
First [1] 30 IF List [Middle] = Searchitem
THEN
[2] 32 Found ← TRUE
ELSE
Search
IF First >= Last
area [3] 36 THEN
SearchFailed ← TRUE
[4] 39 ELSE
Last
IF List[Middle] > Searchitem
Middle [5] 45
THEN II must be in first half

[6] 53 Last ← Middle - 1 II move upper boundary


ELSE II must be in second half
[7] 79
First ← Middle+ 1 II move lower boundary
ENDIF
[8] 86 ENDIF
ENDIF
[9] 95 ENDWHILE
Assume
Searchitem ← 36
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
First [1] 30 IF List [Middle] = Searchitem
THEN
[2] 32 Found ← TRUE
Middle ELSE
Search
IF First >= Last
area [3] 36 THEN
SearchFailed ← TRUE
[4] 39 ELSE
Last
IF List[Middle] > Searchitem
[5] 45
THEN II must be in first half

[6] 53 Last ← Middle - 1 II move upper boundary


ELSE II must be in second half
[7] 79
First ← Middle+ 1 II move lower boundary
ENDIF
[8] 86 ENDIF
ENDIF
[9] 95 ENDWHILE
Assume
Searchitem ← 36
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
[1] 30 IF List [Middle] = Searchitem
THEN
[2] 32 Found ← TRUE
Middle ELSE
IF First >= Last
First [3] 36 THEN
Search SearchFailed ← TRUE
area [4] 39 ELSE
Last
IF List[Middle] > Searchitem
[5] 45
THEN II must be in first half

[6] 53 Last ← Middle - 1 II move upper boundary


ELSE II must be in second half
[7] 79
First ← Middle+ 1 II move lower boundary
ENDIF
[8] 86 ENDIF
ENDIF
[9] 95 ENDWHILE
Assume
Searchitem ← 36
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
[1] 30 IF List [Middle] = Searchitem
THEN
[2] 32 Found ← TRUE
ELSE
IF First >= Last
Middle First [3] 36 THEN
Search SearchFailed ← TRUE
area [4] 39 ELSE
Last
IF List[Middle] > Searchitem
[5] 45
THEN II must be in first half

[6] 53 Last ← Middle - 1 II move upper boundary


ELSE II must be in second half
[7] 79
First ← Middle+ 1 II move lower boundary
ENDIF
[8] 86 ENDIF
ENDIF
[9] 95 ENDWHILE
Assume
Searchitem ← 36
Scenarios
To remember
WHILE NOT Found AND NOT SearchFailed
By Huma Imad
Middle ← (First+ Last) DIV 2 II find middle of current search area
[1] 30 IF List [Middle] = Searchitem
THEN
[2] 32 Found ← TRUE
ELSE
IF First >= Last
[3] 36 THEN
SearchFailed ← TRUE
[4] 39 ELSE

IF List[Middle] > Searchitem


[5] 45
THEN II must be in first half

[6] 53 Last ← Middle - 1 II move upper boundary


ELSE II must be in second half
[7] 79
First ← Middle+ 1 II move lower boundary
ENDIF
[8] 86 ENDIF
ENDIF
[9] 95 ENDWHILE
Q. What is the best and worst case of binary search?
The worst-case is when the target item is not in the search list. Number of
comparisons required is log 2 n for n elements.
The best-case is when the target is found in the middle of the search list.
Number of comparison required is 1.

Q. How many comparisons are needed for a binary search in a set of 64


elements?
Simply put, your answer is log 2  64 (ie 6) comparisons in worst case and
1 comparison in best case.

We usually represent the efficiency by big o notation So, In binary search, the


best case is O(1), average and worst case is O(log 2 n).
• What is the value of log 2 64?
log2 64 = 6, because 26 = 64.

• Therefore, it is obvious that logarithm operation is an inverse one to


exponentiation. There are a few specific types of logarithms. For
example, the logarithm to base 2 is known as the binary logarithm,
and it is widely used in computer science and programming languages

You might also like