Search Algorithms

advertisement
Outline lecture




Revise arrays
Entering into an array
Totalling values in an array
Sequential search
What is an Array




We are interested in one-dimensional arrays
An array has a fixed number of elements and all
elements are of the same type
Each box has an index which in java and C++ starts
with 0
Here is an array which holds the ages of 10 people
0
1
32 34
2
3
56
32
4
12
5
67
6
21
7
34
8
9
21
45
0
1
32 34
2
3
56
32
4
12
5
67
6
21
7
34
8
9
21
45

Lets look at this array in detail
What do you notice about the array ?

Is the data organised in any particular way?

Examples of Arrays



Draw an array of 20 elements which
contains student marks – what type will it
be ?
Draw an array of 15 elements which
contains student grades ranging form A-E –
what type will it be?
Entering data into an array




When you enter data into an array we use a
loop
What type of loop do you think we will
use?
Hint – we know the number of elements
there are in the array
Use a counter to keep track of how many
elements are entered into the array
Read
Entering data into an array









Algorithm
Loop : R = 1 to 10
Enter A( R)
Loop end
The number of elements in array is
10
The counter of loop (R ) allows the
computer to increase the element
number by 1 each time a piece of
data is entered into a memory
location
The computer can find a particular
element in the array by using the
reference number index represented
by R
R = loop counter
A(R ) = element R in the A array
R
1 10
1
Enter
A(R )
R
B







Accumulating the elements ofCalcarray
You may need to sum the elements of an
array
Initialise the sum variable which contains the
total to zero
The instruction Sum = Sum + A(R ) tells the
computer to add the valve of element A(R )
to the old valve of the sum (Sum) and to
store the result into sum memory location
(Sum)
Algorithm
Loop : R = 1 to 10
sum = Sum + A( R)
Loop end

The number of elements in array is 10
The counter of loop (R ) allows the computer
to increase the element number by 1 each
time a piece of data is entered into a memory
location
Sum = Sum of the elements of A

A(R ) = element R in the A array


R
1 5
1
Sum = Sum +
A(R )
R
B
Why Search ?






Everyday life -We always Looking for something
– builder yellow pages, universities, hairdressers
Computers can search
World wide web –
Spreadsheet –
Databases –
Large records – 1000s takes time - many
comparison slow system – user wont wait long
time
Search Algorithms



Different types – Sequential Search, Binary
Search
Discuss - search algorithms - analyze them
Analysis of the algorithms enables
programmers to decide which algorithm to
use for a specific application
Some observations – Key



each item in a data set - special member
that uniquely identifies the item in the data
set
For e.g University - a data set which
contains student records – student ID
uniquely identifies each student
This unique member of the item is called
Key of the item
Some observations - Key



Where can Keys of the item in a data set be
used in ?
When searching the data set - for a
particular item, what do we do ?
compare the key of the item for which we
are searching - with the keys of the items in
the data set – e.g if we looking particular
student id in a list of student id exam
results
Analysis of Algorithms


-
In addition to describing the algorithms –
analyse them
What does analysis of algorithms involve ?
key comparisons
Moreover – the number of key
comparisons refers to - the number of times
the key of the item (in search & sort
algorithms) is compared with the keys of
the items in the list
Target ?

?
Sequential search (linear search)


Problem :- we want to search for a
given element in a list.
Do we know where the target element
occurs?.
Sequential search (linear search)


We can have no guarantees about the
order of elements in the list if (for
example) insertions have been under a
user’s control.
Search starts at the first element in the
list and continues until either the item is
found in the list - or entire list is
searched
A simple search method is as follows:
p193
Algorithm
1.
R=1
2.
While Array(R ) <> Target
R=R+1
WhileEnd
3.
If R > N
Then
Print “Element Not Found”
Else
Print Array (R )
Flowchart for Sequential Search P193
R=1
While
Target
Array(R ) and
R<=N
R= R+1
F
Print
Array(R
)
If
R>N
T
Print
Element Not Found
Flowchart for Sequential Search using for loop
J
1
10
1
If target not found
J= J+1
F
Print
Array(R
)
If
Target
found
T
Print
Element Not Found
Task :- in pairs




Draw an array with 10 integer values
Populate the array with 10 elements
1563789523
Write an algorithm using the sequential
search technique to find the target 6 in the
array
Draw a flowchart
Demonstration

http://www.cosc.canterbury.ac.nz/peopl
e/mukundan/dsal/LSearch.html
The more comparisons he longer it takes
– time!
Sequential search (linear search)


If the search item is found, its index (that is
its location in array) is returned. If search is
unsuccessful, -1 is returned
Note the sequential search does not require
the list elements to be in any particular
order
Sequential Search Analysis : Task – in
pairs


For each iteration in the loop, the search
item is compared with an element in the
list,and a few other statements are
executed. Loop terminates when search
item is found in list
Therefore the execution of the other
statement in loop is directly related to the
outcome of the key comparisons
Sequential Search Analysis



When analysing a search algorithm, count the number of key comparisons –
why ?
because this number gives us the most
useful information,
this criterion for counting the number of
key comparisons can be applied equally
well to other search algorithms
Task :- in pairs – how many comparisons ?
An iterative sequential search of an array that {a)
finds its target; (b) does not find its target
(a) A search for 8
Look at 9
(b) A search for 6
Look at 9
9 5 8 4 7
9 5 8 4 7
8 <> 9 , so continue searching …
Look at 5
9 5 8 4 7
6 <> 9 , so continue searching …
Look at 5
9 5 8 4 7
Sequential Search Analysis




Suppose the search item is in the list
Then number of key comparisons depends
on where in the list the search item is
located.
If search item is first element of L – make
one key comparison – best case
Worst case search item is the last item –
algorithm makes n comparisons
Sequential Search Analysis



If the search item Target , is the first
element in list, how many one comparisons
are needed?
if target is second, how many one
comparisons are needed?
So if the target is the kth element in the list
k comparisons are made
Download