15
CS212: DATASTRUCTURES Lecture 3: Searching 1

Cs212: DataStructures

  • Upload
    grover

  • View
    30

  • Download
    3

Embed Size (px)

DESCRIPTION

Cs212: DataStructures. Lecture 3: Searching. Lecture Contents. searching S equential search algorithm . B inary search algorithm. Search Algorithms. Searching , the process used to find the location of a target among a list of objects. - PowerPoint PPT Presentation

Citation preview

Page 1: Cs212:  DataStructures

CS212: DATASTRUCTURES

Lecture 3: Searching

1

Page 2: Cs212:  DataStructures

2

Lecture Contents

searching Sequential search algorithm. Binary search algorithm.

Page 3: Cs212:  DataStructures

3

Search Algorithms

Searching , the process used to find the location of a target among a list of objects.

In this chapter, we will study searches that work with arrays Search

Algorithms

Sequential

Search

Binary Search

Page 4: Cs212:  DataStructures

4

Search Algorithms

1. Sequential search.

1. It works on the ordered list or the unordered.

2. Binary search.

It requires an ordered list.

Page 5: Cs212:  DataStructures

5

1/ Sequential (Linear) Search

Search an array or list by checking items one at a time.

Sequential search is usually very simple to implement, and is practical when the list has only a few elements, or when performing a single search in an unordered list. Look at every element : This is a very

straightforward loop comparing every element in the array with the target(key).

Eighter we find it,

or we reach the end of the list! Sequential search works the same for both array-

based and linked lists

Page 6: Cs212:  DataStructures

6

Sequential Search

public int linearSearch (int target)

{

for (int n = 0; n < a.length ; n++)

{if (a[n] == target)

return n;

{

return –1;

}

Page 7: Cs212:  DataStructures

7

Locating data in unordered list.

Page 8: Cs212:  DataStructures

8

2/ Binary search algorithm

Search a sorted array by repeatedly dividing the search interval in half.

A fast way to search a sorted array is to use a binary search.

Can’t use binary search algorithm with linked list No physical relationship between the nodes

Page 9: Cs212:  DataStructures

9

Binary search algorithm

Test the data in the element at the middle of the array.

it is in the first half before middle

it is in the second half after middle

Test the data in the element at the middle of the array.

Test the data in the element at the middle of the array.

it is in the second

half!

it is in the second half!

it is in the first half!

it is in the first half!

.. .... ..

Calculate the middle element

Calculate the middle element

If the middle element equals to the Target , the algorithm stops

Target < middle element Target > middle element

Target < middle Target < middle Target > middleTarget > middle

Calculate the middle element

Page 10: Cs212:  DataStructures

10

target > A[mid]first = mid +1

target == A[mid]

target < A[mid]last = mid -1

mid=(first+last)/2

Page 11: Cs212:  DataStructures

11

target < A[mid]last = mid -1

target > A[mid]first = mid +1

target < A[mid]last = first not found stop

target > A[mid]first = mid +1

Page 12: Cs212:  DataStructures

12

Recursive Binary search algorithm

algorithm RecBinarySearch (First, last , target)INPUT

First is index to first element in the list. last is index to last element in the list. target contains the data to be located.

OUTPUT if found – return the index

if not found – return (-1)

Page 13: Cs212:  DataStructures

13

Recursive search algorithm

mid = if target = a[mid] then

Location= midelse if (first=last) then

Location= -1else if (target < a[mid]) then

Location =binarySearch(first, mid-1, target)else if (target > a[mid]) then

Location=binarySearch(mid+1, last, target ) Return Location

2/)( lastfirst

base cases

recursive calls

Page 14: Cs212:  DataStructures

14

Example

[4] [3] [2] [1] [0]

20 11 7 5 3

BinarySearch (0,4,20)M=0+4/2=220 >7 then binarySearch(3 , 4,20)

BinarySearch (3,4,20)M=3+4/2=320 >11 then binarySearch(4 , 4,20)

BinarySearch (4,4,20)M=4+4/2=220 == 20

Return 4

Return 4

Return 4

Recursive call

Recursive call

Page 15: Cs212:  DataStructures

15 End Of Chapter