0% found this document useful (0 votes)
7 views28 pages

CPSC1103 Lecture 8

Uploaded by

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

CPSC1103 Lecture 8

Uploaded by

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

Chapter 8:

Searching and
Sorting Arrays

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
8.1
Introduction to Search Algorithms

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Introduction to Search
Algorithms
Search: locate an item in a list of
information

Two algorithms we will examine:


Linear search
Binary search

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Linear Search
Also called the sequential search
Starting at the first element, this algorithm
sequentially steps through an array
examining each element until it locates the
value it is searching for.

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Linear Search - Example

Array numlist contains:

17 23 5 11 2 29 3

Searching for the the value 11, linear search


examines 17, 23, 5, and 11
Searching for the the value 7, linear search
examines 17, 23, 5, 11, 2, 29, and 3

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Linear Search
Algorithm:
set found to false; set position to –1; set index to 0
while index < number of elts. and found is false
if list[index] is equal to search value
found = true
position = index
end if
add 1 to index
end while
return position

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
A Linear Search Function
int linearSearch(int arr[], int size, int value)
{
int index = 0; // Used as a subscript to search the array
int position = -1; // To record the position of search value
bool found = false; // Flag to indicate if value was found

while (index < size && !found)


{
if (arr[index] == value) // If the value is found
{
found = true; // Set the flag
position = index; // Record the value's subscript
}
index++; // Go to the next element
}
return position; // Return the position, or -1
}

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Linear Search - Tradeoffs
Benefits:
Easy algorithm to understand
Array can be in any order

Disadvantages:
Inefficient (slow): for array of N elements,
examines N/2 elements on average for value
in array, N elements for value not in array

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Binary Search
Requires array elements to be in order
1. Divides the array into three sections:
middle element
elements on one side of the middle element
elements on the other side of the middle element
2. If the middle element is the correct value, done.
Otherwise, go to step 1. using only the half of the
array that may contain the correct value.
3. Continue steps 1. and 2. until either the value is
found or there are no more elements to examine

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Binary Search - Example

Array numlist2 contains:


2 3 5 11 17 23 29

Searching for the the value 11, binary


search examines 11 and stops
Searching for the the value 7, linear
search examines 11, 3, 5, and stops

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Binary Search
Set first to 0
Set last to the last subscript in the array
Set found to false
Set position to -1
While found is not true and first is less than or equal to last
Set middle to the subscript half-way between array[first] and array[last].
If array[middle] equals the desired value
Set found to true
Set position to middle
Else If array[middle] is greater than the desired value
Set last to middle - 1
Else
Set first to middle + 1
End If.
End While.
Return position.

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
A Binary Search Function
int binarySearch(int array[], int size, int value)
{
int first = 0, // First array element
last = size - 1, // Last array element
middle, // Mid point of search
position = -1; // Position of search value
bool found = false; // Flag

while (!found && first <= last)


{
middle = (first + last) / 2; // Calculate mid point
if (array[middle] == value) // If value is found at mid
{
found = true;
position = middle;
}
else if (array[middle] > value) // If value is in lower half
last = middle - 1;
else
first = middle + 1; // If value is in upper half
}
return position;
}
Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Binary Search - Tradeoffs
Benefits:
Much more efficient than linear search. For
array of N elements, performs at most log2N
comparisons

Disadvantages:
Requires that array elements be sorted

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
8.3
Introduction to Sorting Algorithms

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Introduction to Sorting
Algorithms
Sort: arrange values into an order:
Alphabetical
Ascending numeric
Descending numeric

Two algorithms considered here:


Bubble sort
Selection sort

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Bubble Sort
Concept:
Compare 1st two elements
If out of order, exchange them to put in order
Move down one element, compare 2nd and 3rd
elements, exchange if necessary. Continue until end
of array.
Pass through array again, exchanging as necessary
Repeat until pass made with no exchanges

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Example – First Pass

Array numlist3 contains:


17 23 5 11

compare values
17 and 23 – in correct compare values 23 and
order, so no exchange 11 – not in correct order,
so exchange them
compare values 23 and
5 – not in correct order,
so exchange them

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Example – Second Pass

After first pass, array numlist3 contains:


17 5 11 23

compare values 17 and


5 – not in correct order, compare values 17 and
so exchange them 23 – in correct order,
so no exchange
compare values 17 and
11 – not in correct order,
so exchange them

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Example – Third Pass

After second pass, array numlist3 contains:


5 11 17 23

compare values 5 and


11 – in correct order, compare values 17 and
so no exchange 23 – in correct order,
so no exchange
compare values 11 and
17 – in correct order,
so no exchange No exchanges, so
array is in order

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
A Bubble Sort Function –
From Program 8-4

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Bubble Sort - Tradeoffs
Benefit:
Easy to understand and implement

Disadvantage:
Inefficient: slow for large arrays

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Selection Sort
Concept for sort in ascending order:
Locate smallest element in array. Exchange it
with element in position 0
Locate next smallest element in array.
Exchange it with element in position 1.
Continue until all elements are arranged in
order

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Selection Sort - Example
Array numlist contains:
11 2 29 3

1. Smallest element is 2. Exchange 2 with


element in 1st position in array:
2 11 29 3

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Example (Continued)
2. Next smallest element is 3. Exchange 3 with
element in 2nd position in array:

2 3 29 11

3. Next smallest element is 11. Exchange 11


with element in 3rd position in array:

2 3 11 29

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
A Selection Sort Function –
From Program 8-5

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Selection Sort - Tradeoffs
Benefit:
More efficient than Bubble Sort, since fewer
exchanges

Disadvantage:
May not be as easy as Bubble Sort to
understand

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
8.5
Sorting and Searching Vectors

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Sorting and Searching Vectors
Sorting and searching algorithms can be
applied to vectors as well as arrays
Need slight modifications to functions to
use vector arguments:
vector <type> & used in prototype
No need to indicate vector size – functions
can use size member function to calculate

Copyright © 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy