0% found this document useful (0 votes)
68 views17 pages

Binary Search Is Like Looking Up A Phone Number or A Word in The Dictionary

The document describes binary search and skip lists. Binary search works by starting at the middle element of a sorted array and recursively searching the left or right half depending on if the target value is less than or greater than the middle element. This approach divides the search space in half each step, requiring O(log n) time. Skip lists are an alternative to balanced binary search trees that allow searching a sorted linked list in O(log n) time by maintaining multiple levels of sorting.

Uploaded by

M NOOR MALIK
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
68 views17 pages

Binary Search Is Like Looking Up A Phone Number or A Word in The Dictionary

The document describes binary search and skip lists. Binary search works by starting at the middle element of a sorted array and recursively searching the left or right half depending on if the target value is less than or greater than the middle element. This approach divides the search space in half each step, requiring O(log n) time. Skip lists are an alternative to balanced binary search trees that allow searching a sorted linked list in O(log n) time by maintaining multiple levels of sorting.

Uploaded by

M NOOR MALIK
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 17

Searching an Array: Binary Search

 Binary search is like looking up a phone number


or a word in the dictionary
• Start in middle of book
• If name you're looking for comes before names on
page, look in first half
• Otherwise, look in second half
Lecture No.39
Data Structure

Dr. Sohail Aslam


Binary Search

If ( value == middle element )


value is found
else if ( value < middle element )
search left-half of list with the same method
else
search right-half of list with the same method
Binary Search

Case 1: val == a[mid]


val = 10
low = 0, high = 8
mid = (0 + 8) / 2 = 4

a: 1 5 7 9 10 13 17 19 27
0 1 2 3 4 5 6 7 8

low mid high


Binary Search -- Example 2

Case 2: val > a[mid]


val = 19
low = 0, high = 8
mid = (0 + 8) / 2 = 4
new low = mid+1 = 5
a: 1 5 7 9 10 13 17 19 27
0 1 2 3 4 5 6 7 8

low new high


mid
low
Binary Search -- Example 3

Case 3: val < a[mid]


val = 7
low = 0, high = 8
mid = (0 + 8) / 2 = 4
new high = mid-1 = 3
a: 1 5 7 9 10 13 17 19 27
0 1 2 3 4 5 6 7 8

low new mid high


high
Binary Search -- Example 3 (cont)

val = 7

a: 1 5 7 9 10 13 17 19 27
0 1 2 3 4 5 6 7 8

a: 1 5 7 9 10 13 17 19 27
0 1 2 3 4 5 6 7 8

a: 1 5 7 9 10 13 17 19 27
0 1 2 3 4 5 6 7 8
Binary Search – C++ Code
int isPresent(int *arr, int val, int N)
{
int low = 0;
int high = N - 1;
int mid;
while ( low <= high ){
mid = ( low + high )/2;
if (arr[mid]== val)
return 1; // found!
else if (arr[mid] < val)
low = mid + 1;
else
high = mid - 1;
}
return 0; // not found
}
Binary Search: binary tree

An entire sorted list

First half Second half

First half Second half

First half

 The search divides a list into two small sub-


lists till a sub-list is no more divisible.
Binary Search Efficiency

 After 1 bisection N/2 items


 After 2 bisections N/4 = N/22 items

 . . .
 After i bisections N/2i =1 item

i = log2 N
Implementation 3: linked list

 TableNodes are again stored


consecutively (unsorted or
sorted) key entry
 insert: add to front; (1or n for
a sorted list)
 find: search through
potentially all the keys, one at
a time; (n for unsorted or for
a sorted list
 remove: find, remove using and so on
pointer alterations; (n)
Implementation 4: Skip List

 Overcome basic limitations of previous lists


• Search and update require linear time
 Fast Searching of Sorted Chain
 Provide alternative to BST (binary search
trees) and related tree structures. Balancing
can be expensive.
 Relatively recent data structure: Bill Pugh
proposed it in 1990.
Skip List Representation

 Can do better than n comparisons to find


element in chain of length n
head tail

20 30 40 50 60
Skip List Representation

 Example: n/2 + 1 if we keep pointer to


middle element
head tail

20 30 40 50 60
Higher Level Chains
head tail
level 1&2 chains

20 26 30 40 50 57 60

 For general n, level 0 chain includes all elements


 level 1 every other element, level 2 chain every
fourth, etc.
 level i, every 2i th element
Higher Level Chains
head tail
level 1&2 chains

20 26 30 40 50 57 60

 Skip list contains a hierarchy of chains


 In general level i contains a subset of
elements in level i-1
Skip List: formally

A skip list for a set S of distinct (key, element)


items is a series of lists S0, S1 , … , Sh such that
• Each list Si contains the special keys 
and 
• List S0 contains the keys of S in
nondecreasing order
• Each list is a subsequence of the
previous one, i.e.,
S0  S1  …  Sh
• List Sh contains only the two special keys

You might also like