***Welcome to ashrafedu.blogspot.com * * * This website is maintained by ASHRAF***

Tuesday, September 19, 2023

Searching (Sequential and Binary search)

The process of locating required data is known as searching. Searching is the process of finding the location of the target among a list of objects.

A searching algorithm accepts two arguments as parameters—a target key value to be searched and the list to be searched. The search algorithm searches a target key value in the list until the target key is found or can conclude that it is not found.

Search techniques

The two basic search techniques are:

1. Sequential search

2. Binary search

i. Sequential Search

The easiest search technique is a sequential search. Sequential search begins with the first available record and proceeds to the next available record repeatedly until we find the target key or conclude that it is not found. Sequential search is also called as linear search.

Sequential search is suitable when the data is stored in an unordered manner and also when there is no way to directly access the data elements.

Algorithm:

1. Set i = 0, flag = 0

2. Compare key[i] and target

if(key[i] = target)

Set flag = 1, location = i and goto step 5

3. Move to next data element

i = i + 1

4. if(i < n) goto step 2

5. if(flag = 1) then

return i as position of target located

else

report as ‘Target not found’

6. stop

 

Consider the example

Index

0

1

2

3

4

5

6

Key

20

15

12

9

5

13

10

 

Let target data be 9.

Initially, i = 0 and the target element 9 is to be searched. At each pass, the target 9 is compared with the element at the ith location till it is found or the index i exceeds the size.

The number of comparisons depends on where the target data is stored in the search list. If the target data is placed at the first location, we get it in just one comparison. Two comparisons are needed if the target data is in the second location. Similarly, i comparisons are required if the target data is at the ith location and n comparisons, if it is at the nth location.

The average number of comparisons done by the sequential search method in the case of a successful search is (n + 1)/2.

An unsuccessful search is given by n comparisons. The number of comparisons is n and the complexity is denoted as O(n) which is worst case.

The best case complexity is 1, as the target data element is at the first location and requires only a single comparison.

Advantages

1. A simple and easy method

2. Efficient for small lists

3. Suitable for unsorted data

4. Suitable for storage structures which do not support direct access to data.

Disadvantages

1. Highly inefficient for large data.


ii. Binary Search

Binary search is the fast search algorithm with the time complexity of O(log n). It works on the principle of divide and conquer. This algorithm works on sorted data lists.

In binary search algorithm, to search for a particular element, it is first compared with the element at the middle position, and if it is found, the search is successful, else if the middle position value is greater than the target, the search will continue in the first half of the list; otherwise, the target will be searched in the second half of the list. The same process is repeated for one of the halves of the list till the list is reduced to size one.

Algorithm

1. Let n be size of the list

Let target be the element to be searched

Let flag = 0, low = 0, high = n-1

2. if low <= high, then

middle = (low + high)/2

   else goto step (5)

3. if(key[middle] = target)

Position = middle, fl ag = 1

Goto step (5)

   else if(key[middle] > target) then

high = middle − 1

   else

low = middle + 1

4. Goto step(2)

5. if flag = 1

report as target element found at location ‘position’

   else

report that element is not found in the list

6. stop

 

Consider the list

Index

0

1

2

3

4

Value

10

14

19

26

31

 

Let the target item be 26

compute mid= (low+high)/2

=(0+4)/2  = 2

So the mid of list is 2(index). It contains value 19. Compare 19 with target item 26. Since 19< 26

search is performed on right sublist.

 

Index

3

4

Value

26

31

 

Now low=mid+1   = 2+1  = 3

mid = (3+4)/2 =3

The data item in index 3 is 26 and it is equal to target data item. Search algorithm returns the index 3 and search is finished.

Advantages

1. Suitable for sorted data

2. Efficient for large lists

3. Suitable for storage structures that support direct access to data

4. Time complexity is O(log2(n))

Disadvantages

1. Not applicable for unsorted data

2. Not suitable for storage structures that do not support direct access to data.

3. Inefficient for small lists

No comments:

Post a Comment

Prim’s algorithm for finding MST (Minimum Spanning Tree)

Prim's algorithm to find minimum cost spanning tree uses the greedy approach. Prim's algorithm, in contrast with Kruskal's algor...