2. Searching : Linear search
Searching refers to the operation of finding the location LOC of ITEM in DATA, or printing
some message that ITEM does not appear there.
DATA is a linear array with n elements. The most intuitive way to search for a given ITEM in
DATA is to compare ITEM with each element of DATA one by one. That is first we test
whether DATA[1 ]=ITEM, and then we test whether DATA[2 ]=ITEM, and so on. This
method, which traverses DATA sequentially to locate ITEM, is called linear search
or sequential search.
Algorithm 4.5 : A linear array DATA with N elements and a specific ITEM
of information are given. This algorithm finds the location LOC of ITEM in
the array DATA or sets LOC = 0.
1. Set DATA[N+1]:=ITEM.
2. Set LOC:=1.
3. Repeat while DATA[LOC]! =ITEM :
Set LOC := LOC +1.
[End of loop]
4. If LOC = N+1, then :
Write : ITEM is not in the array DATA.
Else :
Write : LOC is the location of ITEM.
5.Exit.
3. Complexity of Linear search
• Measured by the number f(n) of comparisons required to find ITEM in
the DATA array. Two important case:
– Average case:
• Suppose pk is the probability that ITEM appears in DATA[k], and
• q is the probability that ITEM does not appears in DATA.
– Then p1+ p2+ p3+ p4+ … pn+ q = 1 (Total probability)
• Average number of comparisons can be calculated by-
– f(n) = 1. p1 + 2. p1+ 3. p1+ ……………….+ n . pn+ (n+1). q
– Let, q is very small q0 and item appears in equal probability then pi= 1/n
1 1 1
f (n) = 1 ⋅ + 2 ⋅ + ⋅ ⋅ ⋅ + n ⋅ + (n + 1) ⋅ 0
n n n
1 n(n + 1) 1 n + 1
= (1 + 2 + 3 + ⋅ ⋅ ⋅ + n) ⋅ = ⋅ =
n 2 n 2
– Worse case: when the search occurs through the entire array, DATA. i.e.
When the ITEM does not appar in the array DATA
• It requires f(n)= n+1
• In this case, the running time is proportional to n
4. Binary Search Algorithm
BINARY(DATA, LB, UB, ITEM, LOC)
1. Set BEG=LB; END=UB; and MID=INT((BEG+END)/2).
2. Repeat step 3 and 4 while BEG ≤ END and DATA[MID] ≠ ITEM
3. If ITEM < DATA[MID] then
Set END= MID - 1
Else:
Set BEG= MID +1
[end of if structure]
4. Set MID= INT((BEG+END)/2)
[End of step 2 loop]
5. If ITEM = DATA[MID] then
Set LOC= MID
Else:
Set LOC= NULL
[end of if structure]
6. Exit.
6. Binary Search - Complexity
• Often not interested in best case.
• Worst case:
– Loop executes until BEG <= END
– Size halved in each iteration
– N, N/2, N/4, …N/2K…. 1
– How many steps ?
7. Binary Search - Complexity
• Worst case:
– N/2K = 1 i.e. 2K = N
– Which gives K=log2N steps, which is O(log2(N))
– This is considered very fast when compared to linear
8. Binary Search - Complexity
• Average case:
– 1st iteration: 1 possible value
– 2nd iteration: 2 possible values (left or right half)
– 3rd iteration: 4 possible values (left of left, right of left, right of right,
right of left)
– ith iteration: 2i-1 possible values
9. Binary Search - Complexity
• Average Case:
1 + 2 + 2 + 3 + 3 + 3 + 3 + … (upto log N steps)
1 element can be found with 1 comparison
2 elements 2
4 elements 3
Above Sum = sum over all possibilities
= Σi=0 to log N (i*2i-1) = O (log N)
10. Multidimensional arrays
Two dimensional, three dimensional arrays and ….. Where elements are
referenced respectively by two, three and ……subscripts.
Two – dimensional Arrays
A Two – dimensional Arrays m x n array A is a collection of m . n data
elements such that each element is specified by a pair of integers (such as
J, K), called subscripts.
The element of A with first subscript J and second subscript K will be
denoted by A[J, K]
Columns
1 2 3
1 A[1, 1] A[1, 2] A[1, 3]
Rows 2
A[2, 1] A[2, 2] A[2, 3]
3 A[3, 1] A[3, 2] A[3, 3]
Fig: Two dimensional 3 x 3 array A
11. Matrix Multiplication
Algorithm 4.7: MATMUL(A, B, C, M, P, N)
Let A be an MXP matrix array, and let B be a PXN matrix array. This algorithm
stores the product of A and B in an MXN matrix array.
1. Repeat steps 2 to 4 for I =1 to M:
2. Repeat steps 3 to 4 for J =1 to N:
3. Set C[I, J]:=0
4. Repeat for K =1 to P:
5. C[I, J]:= C[I, J]:+A[I, K]*B[K, J]
6. Exit
See solved problem 4.12.