SlideShare ist ein Scribd-Unternehmen logo
1 von 81
Chapter 7
Problem Solving
and Algorithms
2
Chapter Goals
• Describe the computer problem-solving process and
relate it to Polya’s How to Solve It list
• Distinguish between a simple type and a composite type
• Describe two composite data-structuring mechanisms
• Recognize a recursive problem and write a recursive
algorithm to solve it
• Distinguish between an unsorted array and a sorted
array
• Distinguish between a selection sort and an insertion
sort
3
Chapter Goals
• Describe the Quicksort algorithm
• Apply the selection sort, the bubble sort, insertion sort,
and Quicksort to an array of items by hand
• Apply the binary search algorithm
• Demonstrate an understanding of the algorithms in this
chapter by hand-simulating them with a sequence of
items
4
Problem Solving
Problem solving
The act of finding a solution to a perplexing,
distressing, vexing, or unsettled question
How do you define problem solving?
5
Problem Solving
How to Solve It: A New Aspect of
Mathematical Method by George Polya
"How to solve it list" written within the
context of mathematical problems
But list is quite general
We can use it to solve computer
related problems!
6
Problem Solving
How do you solve problems?
Understand the problem
Devise a plan
Carry out the plan
Look back
7
Strategies
Ask questions!
– What do I know about the problem?
– What is the information that I have to process
in order the find the solution?
– What does the solution look like?
– What sort of special cases exist?
– How will I recognize that I have found
the solution?
8
Strategies
Ask questions! Never reinvent the wheel!
Similar problems come up again and again
in different guises
A good programmer recognizes a task or
subtask that has been solved before and
plugs in the solution
Can you think of two similar problems?
9
Strategies
Divide and Conquer!
Break up a large problem into smaller units
and solve each smaller problem
– Applies the concept of abstraction
– The divide-and-conquer approach can be
applied over and over again until each
subtask is manageable
10
Computer Problem-Solving
Analysis and Specification Phase
Analyze
Specification
Algorithm Development Phase
Develop algorithm
Test algorithm
Implementation Phase
Code algorithm
Test algorithm
Maintenance Phase
Use
Maintain
Can you
name
a recurring
theme?
11
Phase Interactions
Should we
add another
arrow?
(What happens
if the problem
is revised?)
12
Algorithms
Algorithm
A set of unambiguous instructions for solving a
problem or subproblem in a finite amount of time
using a finite amount of data
Abstract Step
An algorithmic step containing unspecified details
Concrete Step
An algorithm step in which all details are specified
13
Developing an Algorithm
Two methodologies used to develop computer
solutions to a problem
– Top-down design focuses on the tasks to be
done
– Object-oriented design focuses on the data
involved in the solution (We will discuss this
design in Ch. 9)
14
Summary of Methodology
Analyze the Problem
Understand the problem!!
Develop a plan of attack
List the Main Tasks (becomes Main Module)
Restate problem as a list of tasks (modules)
Give each task a name
Write the Remaining Modules
Restate each abstract module as a list of tasks
Give each task a name
Re-sequence and Revise as Necessary
Process ends when all steps (modules) are concrete
15
Top-Down Design
Process continues for as many levels as it takes to make every step
concrete
Name of (sub)problem at one level becomes a module at next lower
level
16
Control Structures
Control structure
An instruction that determines the order in
which other instructions in a program are
executed
Can you name the ones we defined in the
functionality of pseudocode?
17
Selection Statements
Flow of control of
if statement
18
Algorithm with Selection
Problem: Write the appropriate dress for a given
temperature.
Write "Enter temperature"
Read temperature
Determine Dress
Which statements are concrete?
Which statements are abstract?
19
Algorithm with Selection
IF (temperature > 90)
Write “Texas weather: wear shorts”
ELSE IF (temperature > 70)
Write “Ideal weather: short sleeves are fine”
ELSE IF (temperature > 50)
Write “A little chilly: wear a light jacket”
ELSE IF (temperature > 32)
Write “Philadelphia weather: wear a heavy coat”
ELSE
Write “Stay inside”
Determine Dress
20
Looping Statements
Flow of control of while statement
21
Looping Statements
Set sum to 0
Set count to 1
While (count <= limit)
Read number
Set sum to sum + number
Increment count
Write "Sum is " + sum
Why is it
called a
count-controlled
loop?
A count-controlled loop
22
Looping Statements
Set sum to 0
Set allPositive to true
WHILE (allPositive)
Read number
IF (number > 0)
Set sum to sum + number
ELSE
Set allPositive to false
Write "Sum is " + sum
Why is it
called an
event-conrolled
loop?
What is the
event?
An event-controlled loop
23
Looping Statements
Read in square
Calculate the square root
Write out square and the square root
Calculate Square Root
Are there any abstract steps?
24
Looping Statements
Set epsilon to 1
WHILE (epsilon > 0.001)
Calculate new guess
Set epsilon to abs(square - guess * guess)
Are there any abstract steps?
Calculate square root
25
Looping Statements
Set newGuess to
(guess + (square/guess)) / 2.0
Are there any abstract steps?
Calculate new guess
26
Looping Statements
Read in square
Set guess to square/4
Set epsilon to 1
WHILE (epsilon > 0.001)
Calculate new guess
Set epsilon to abs(square - guess * guess)
Write out square and the guess
27
Composite Data Types
Records
A named heterogeneous collection of items in
which individual items are accessed by name. For
example, we could bundle name, age and hourly
wage items into a record named Employee
Arrays
A named homogeneous collection of items in
which an individual item is accessed by its position
(index) within the collection
Composite Data Types
Employee
name
age
hourly/Wage
Following algorithm, stores values into the fields of record:
Employee employee // Declare and Employee variable
Set employee.name to “Frank Jones”
Set employee.age to 32
Set employee.hourlyWage to 27.50
28
29
Composite Data Types
numbers[0]
numbers[4]
Insert 7.5
Arrays
• As data is being read into an array, a counter is
updated so that we always know how many data
items were stored
• If the array is called list, that with which we are
working is from list[0] to list [length-1]
30
31
An Unsorted Array
data[0]...data[length-1]
is of interest
32
Composite Data Types
integer data[20]
Write “How many values?”
Read length
Set index to 0
WHILE (index < length)
Read data[index]
Set index to index + 1
Fill an array numbers with limit values
Sequential Search of an
Unsorted Array
A sequential search examines each item in turn
and compares it to the one we are searching.
If it matches, we have found the item. If not, we
look at the next item in the array.
We stop either when we have found the item or
when we have looked at all the items and not
found a match
Thus, a loop with two ending conditions
33
Sequential Search Algorithm
Set Position to 0
Set found to FALSE
WHILE (position < length AND NOT found )
IF (numbers [position] equals searchitem)
Set Found to TRUE
ELSE
Set position to position + 1
34
35
Booleans
Boolean Operators
A Bolean variable is a location in memory that can contain
either true or false
Boolean operator AND returns TRUE if both operands are
true and FALSE otherwise
Boolean operator OR returns TRUE if either operand is true
and FALSE otherwise
Boolean operator NOT returns TRUE if its operand is false
and FALSE if its operand is true
36
Sorted Arrays
• The values stored in an array have unique keys of a
type for which the relational operators are defined.
• Sorting rearranges the elements into either
ascending or descending order within the array.
• A sorted array is one in which the elements are in
order
Sequential Search in a Sorted
Array
If items in an array are sorted, we can stop
looking when we pass the place where the
item would be it were present in the array
37
Is this better?
38
A Sorted Array
A sorted array of
integers
39
A Sorted Array
Read in array of values
Write “Enter value for which to search”
Read searchItem
Set found to TRUE if searchItem is there
IF (found)
Write “Item is found”
ELSE
Write “Item is not found”
40
A Sorted Array
Set found to TRUE if searchItem is there
Set index to 0
Set found to FALSE
WHILE (index < length AND NOT found)
IF (data[index] equals searchItem)
Set found to TRUE
ELSE IF (data[index] > searchItem)
Set index to length
ELSE
Set index to index + 1
41
Binary Search
Sequential search
Search begins at the beginning of the list and
continues until the item is found or the entire list
has been searched
Binary search (list must be sorted)
Search begins at the middle and finds the item or
eliminates half of the unexamined items; process
is repeated on the half where the item might be
Say that again…
42
Binary Search
Set first to 0
Set last to length-1
Set found to FALSE
WHILE (first <= last AND NOT found)
Set middle to (first + last)/ 2
IF (item equals data[middle]))
Set found to TRUE
ELSE
IF (item < data[middle])
Set last to middle – 1
ELSE
Set first to middle + 1
RETURN found
43
Binary Search
Figure 7.10 Trace of the binary search
44
Binary Search
Table 7.1 Average Number of Comparisons
Is a binary search
always better?
45
Sorting
Sorting
Arranging items in a collection so that there is an
ordering on one (or more) of the fields in the items
Sort Key
The field (or fields) on which the ordering is based
Sorting algorithms
Algorithms that order the items in the collection
based on the sort key
Why is sorting important?
46
Selection Sort
Given a list of names, put them in alphabetical
order
– Find the name that comes first in the alphabet,
and write it on a second sheet of paper
– Cross out the name off the original list
– Continue this cycle until all the names on the original
list have been crossed out and written onto the
second list, at which point the second list contains the
same items but in sorted order
47
Selection Sort
A slight adjustment to this manual approach
does away with the need to duplicate space
– As you cross a name off the original list, a free
space opens up
– Instead of writing the value found on a second
list, exchange it with the value currently in the
position where the crossed-off item should go
48
Selection Sort
Figure 7.11 Example of a selection sort (sorted elements are shaded)
49
Selection Sort
Selection Sort
Set firstUnsorted to 0
WHILE (not sorted yet)
Find smallest unsorted item
Swap firstUnsorted item with the smallest
Set firstUnsorted to firstUnsorted + 1
Not sorted yet
current < length – 1
50
Selection Sort
Find smallest unsorted item
Set indexOfSmallest to firstUnsorted
Set index to firstUnsorted + 1
WHILE (index <= length – 1)
IF (data[index] < data[indexOfSmallest])
Set indexOfSmallest to index
Set index to index + 1
Set index to indexOfSmallest
51
Selection Sort
Swap firstUnsorted with smallest
Set tempItem to data[firstUnsorted]
Set data[firstUnsorted] to data[indexOfSmallest]
Set data[indexOfSmallest] to tempItem
52
Bubble Sort
Bubble Sort uses the same strategy:
Find the next item
Put it into its proper place
But uses a different scheme for finding the next
item
Starting with the last list element, compare
successive pairs of elements, swapping whenever
the bottom element of the pair is smaller than the
one above it
53
Bubble Sort
54
Bubble Sort
Bubble sort is very slow!
Can you see a way to make it faster?
Under what circumstances is bubble
sort fast?
55
Bubble Sort
Bubble Sort
Set firstUnsorted to 0
Set index to firstUnsorted + 1
Set swap to TRUE
WHILE (index < length AND swap)
Set swap to FALSE
“Bubble up” the smallest item in unsorted part
Set firstUnsorted to firstUnsorted + 1
56
Bubble Sort
Bubble up
Set index to length – 1
WHILE (index > firstUnsorted + 1)
IF (data[index] < data[index – 1])
Swap data[index] and data[index – 1]
Set swap to TRUE
Set index to index - 1
Insertion Sort
If you have only one item in the array, it is already
sorted.
If you have two items, you can compare and
swamp them if necessary, sorting the first two with
respect to themselves.
Take the third item and put it into its place relative
to the first two
Now the first three items are sorted with respect to
one another
57
Insertion Sort
The item being added to the sorted portion can be
bubbled up as in the bubble sort
58
Insertion Sort
InsertionSort
Set current to 1
WHILE (current < length)
Set index to current
Set placeFound to FALSE
WHILE (index > 0 AND NOT placeFound)
IF (data[index] < data[index – 1])
Swap data[index] and data[index – 1]
Set index to index – 1
ELSE
Set placeFound to TRUE
Set current to current + 1
59
60
Subprogram Statements
We can give a section of code a name and
use that name as a statement in another
part of the program
When the name is encountered, the
processing in the other part of the program
halts while the named code is executed
Remember?
61
Subprogram Statements
What if the subprogram needs data from the
calling unit?
Parameters
Identifiers listed in parentheses beside the
subprogram declaration; sometimes called formal
parameters
Arguments
Identifiers listed in parentheses on the
subprogram call; sometimes called actual
parameters
62
Subprogram Statements
Figure 7.14 Subprogram flow of control
63
Subprogram Statements
64
Recursion
Recursion
The ability of a subprogram to call itself
Base case
The case to which we have an answer
General case
The case that expresses the solution in terms of a
call to itself with a smaller version of the problem
65
Recursion
For example, the factorial of a number is defined
as the number times the product of all the numbers
between itself and 0:
N! = N * (N  1)!
Base case
Factorial(0) = 1 (0! is 1)
General Case
Factorial(N) = N * Factorial(N-1)
66
Recursion
Write “Enter n”
Read n
Set result to Factorial(n)
Write result + “ is the factorial of “ + n
Factorial(n)
IF (n equals 0)
RETURN 1
ELSE
RETURN n * Factorial(n-1)
67
Recursion
BinarySearch (first, last)
IF (first > last)
RETURN FALSE
ELSE
Set middle to (first + last)/ 2
IF (item equals data[middle])
RETURN TRUE
ELSE
IF (item < data[middle])
BinarySearch (first, middle – 1)
ELSE
BinarySearch (middle + 1, last
68
Quicksort
Ordering a list
using the Quicksort algorithm
It is easier to sort a smaller
number of items: Sort A…F,
G…L, M…R, and S…Z and
A…Z is sorted
Quicksort algorithm
With each attempt to sort the stack of data
elements, the stack is divided at a splitting value,
splitVal, and the same approach is used to sort
each of the smaller stacks (a smaller case)
Process continues until the small stacks do not
need to be divided further (the base case)
The variables first and last in Quicksort algorithm
reflect the part of the array data that is currently
being processed
69
70
Quicksort
Quicksort(first, last)
IF (first < last) // There is more than one item
Select splitVal
Split (splitVal) // Array between first and
// splitPoint–1 <= splitVal
// data[splitPoint] = splitVal
// Array between splitPoint + 1
// and last > splitVal
Quicksort (first, splitPoint - 1)
Quicksort (splitPoint + 1, last)
71
Quicksort
72
Quicksort
Split(splitVal)
Set left to first + 1
Set right to last
WHILE (left <= right)
Increment left until data[left] > splitVal OR left > right
Decrement right until data[right] < splitVal
OR left > right
IF(left < right)
Swap data[left] and data[right]
Set splitPoint to right
Swap data[first] and data[splitPoint]
Return splitPoint
73
Quicksort
74
Important Threads
Information Hiding
The practice of hiding the details of a module with
the goal of controlling access to it
Abstraction
A model of a complex system that includes only
the details essential to the viewer
Information Hiding and Abstraction are two
sides of the same coin
75
Important Threads
Data abstraction
Separation of the logical view of data from their
implementation
Procedural abstraction
Separation of the logical view of actions from their
implementation
Control abstraction
Separation of the logical view of a control structure from its
implementation
76
Important Threads
Identifiers
Names given to data and actions, by which
– we access the data and
Read firstName, Set count to count + 1
– execute the actions
Split(splitVal)
Giving names to data and actions is a form
of abstraction
77
Important Threads
Abstraction is the most powerful tool people have for
managing complexity!
78
Ethical Issues
Open-Source Software Development
What are the advantages and disadvantages
of open-source software?
What does the success of Linux suggest
about the future of open-source software?
Should open-source software be licensed
and subject to standard copyright laws?
79
Who am I?
My wife Jill and
I are holding
the medal I
received when
I was knighted.
What university
did I retire from
and where am
I working now?
80
Who am I?
I am a
mathematician.
Why is my
picture in a
book about
computer
science?
81
Do you know?
What writing system did the Rosetta stone
serve as a key to translating?
What are some of the adverse
consequences of piggybacking for free
off someone else’s paid Wi-Fi connection?
What, if any, legal privacy protections does a
blogger have to resist an employer seeking to
fire an anonymous blogging employee?

Weitere ähnliche Inhalte

Ă„hnlich wie Algorithms the fundamentals, For computer Science.ppt

advanced searching and sorting.pdf
advanced searching and sorting.pdfadvanced searching and sorting.pdf
advanced searching and sorting.pdfharamaya university
 
DATA STRUCTURES USING C -ENGGDIGEST
DATA STRUCTURES USING C -ENGGDIGESTDATA STRUCTURES USING C -ENGGDIGEST
DATA STRUCTURES USING C -ENGGDIGESTSwapnil Mishra
 
lec_4_data_structures_and_algorithm_analysis.ppt
lec_4_data_structures_and_algorithm_analysis.pptlec_4_data_structures_and_algorithm_analysis.ppt
lec_4_data_structures_and_algorithm_analysis.pptSourabhPal46
 
lec_4_data_structures_and_algorithm_analysis.ppt
lec_4_data_structures_and_algorithm_analysis.pptlec_4_data_structures_and_algorithm_analysis.ppt
lec_4_data_structures_and_algorithm_analysis.pptMard Geer
 
Chapter 11 - Sorting and Searching
Chapter 11 - Sorting and SearchingChapter 11 - Sorting and Searching
Chapter 11 - Sorting and SearchingEduardo Bergavera
 
Software fundamentals
Software fundamentalsSoftware fundamentals
Software fundamentalsSusan Winters
 
DS Unit 1.pptx
DS Unit 1.pptxDS Unit 1.pptx
DS Unit 1.pptxchin463670
 
data structures and algorithms Unit 3
data structures and algorithms Unit 3data structures and algorithms Unit 3
data structures and algorithms Unit 3infanciaj
 
Uta005 lecture3
Uta005 lecture3Uta005 lecture3
Uta005 lecture3vinay arora
 
Standard algorithms
Standard algorithmsStandard algorithms
Standard algorithmsmissstevenson01
 
Types of Algorithms.ppt
Types of Algorithms.pptTypes of Algorithms.ppt
Types of Algorithms.pptALIZAIB KHAN
 
1 D Arrays in C++
1 D Arrays in C++1 D Arrays in C++
1 D Arrays in C++poonam.rwalia
 
An Introduction To Python - Tables, List Algorithms
An Introduction To Python - Tables, List AlgorithmsAn Introduction To Python - Tables, List Algorithms
An Introduction To Python - Tables, List AlgorithmsBlue Elephant Consulting
 
Sorting algorithms
Sorting algorithmsSorting algorithms
Sorting algorithmsEleonora Ciceri
 
Algorithm and flowchart with pseudo code
Algorithm and flowchart with pseudo codeAlgorithm and flowchart with pseudo code
Algorithm and flowchart with pseudo codehamza javed
 
An Experiment to Determine and Compare Practical Efficiency of Insertion Sort...
An Experiment to Determine and Compare Practical Efficiency of Insertion Sort...An Experiment to Determine and Compare Practical Efficiency of Insertion Sort...
An Experiment to Determine and Compare Practical Efficiency of Insertion Sort...Tosin Amuda
 
Algorithm analysis (All in one)
Algorithm analysis (All in one)Algorithm analysis (All in one)
Algorithm analysis (All in one)jehan1987
 

Ă„hnlich wie Algorithms the fundamentals, For computer Science.ppt (20)

advanced searching and sorting.pdf
advanced searching and sorting.pdfadvanced searching and sorting.pdf
advanced searching and sorting.pdf
 
Lecture_Oct26.pptx
Lecture_Oct26.pptxLecture_Oct26.pptx
Lecture_Oct26.pptx
 
DATA STRUCTURES USING C -ENGGDIGEST
DATA STRUCTURES USING C -ENGGDIGESTDATA STRUCTURES USING C -ENGGDIGEST
DATA STRUCTURES USING C -ENGGDIGEST
 
lec_4_data_structures_and_algorithm_analysis.ppt
lec_4_data_structures_and_algorithm_analysis.pptlec_4_data_structures_and_algorithm_analysis.ppt
lec_4_data_structures_and_algorithm_analysis.ppt
 
lec_4_data_structures_and_algorithm_analysis.ppt
lec_4_data_structures_and_algorithm_analysis.pptlec_4_data_structures_and_algorithm_analysis.ppt
lec_4_data_structures_and_algorithm_analysis.ppt
 
Chapter 11 - Sorting and Searching
Chapter 11 - Sorting and SearchingChapter 11 - Sorting and Searching
Chapter 11 - Sorting and Searching
 
Software fundamentals
Software fundamentalsSoftware fundamentals
Software fundamentals
 
DS Unit 1.pptx
DS Unit 1.pptxDS Unit 1.pptx
DS Unit 1.pptx
 
data structures and algorithms Unit 3
data structures and algorithms Unit 3data structures and algorithms Unit 3
data structures and algorithms Unit 3
 
Uta005 lecture3
Uta005 lecture3Uta005 lecture3
Uta005 lecture3
 
Standard algorithms
Standard algorithmsStandard algorithms
Standard algorithms
 
Types of Algorithms.ppt
Types of Algorithms.pptTypes of Algorithms.ppt
Types of Algorithms.ppt
 
Create and analyse programs
Create and analyse programsCreate and analyse programs
Create and analyse programs
 
1 D Arrays in C++
1 D Arrays in C++1 D Arrays in C++
1 D Arrays in C++
 
An Introduction To Python - Tables, List Algorithms
An Introduction To Python - Tables, List AlgorithmsAn Introduction To Python - Tables, List Algorithms
An Introduction To Python - Tables, List Algorithms
 
9 Arrays
9 Arrays9 Arrays
9 Arrays
 
Sorting algorithms
Sorting algorithmsSorting algorithms
Sorting algorithms
 
Algorithm and flowchart with pseudo code
Algorithm and flowchart with pseudo codeAlgorithm and flowchart with pseudo code
Algorithm and flowchart with pseudo code
 
An Experiment to Determine and Compare Practical Efficiency of Insertion Sort...
An Experiment to Determine and Compare Practical Efficiency of Insertion Sort...An Experiment to Determine and Compare Practical Efficiency of Insertion Sort...
An Experiment to Determine and Compare Practical Efficiency of Insertion Sort...
 
Algorithm analysis (All in one)
Algorithm analysis (All in one)Algorithm analysis (All in one)
Algorithm analysis (All in one)
 

Mehr von CarloCimacio

The Law that protect the cyberspace.pptx
The Law that protect the cyberspace.pptxThe Law that protect the cyberspace.pptx
The Law that protect the cyberspace.pptxCarloCimacio
 
Intro_to_Arduino_-_v30dadasdadadadaasda.ppt
Intro_to_Arduino_-_v30dadasdadadadaasda.pptIntro_to_Arduino_-_v30dadasdadadadaasda.ppt
Intro_to_Arduino_-_v30dadasdadadadaasda.pptCarloCimacio
 
pc assembly 1111111pc assembly 1111111- Copy.pptx
pc assembly 1111111pc assembly 1111111- Copy.pptxpc assembly 1111111pc assembly 1111111- Copy.pptx
pc assembly 1111111pc assembly 1111111- Copy.pptxCarloCimacio
 
484768 23424242 2523522 345343242423.pptx
484768 23424242 2523522 345343242423.pptx484768 23424242 2523522 345343242423.pptx
484768 23424242 2523522 345343242423.pptxCarloCimacio
 
computer net and cabling wires for engioneering .ppt
computer net and cabling wires for engioneering .pptcomputer net and cabling wires for engioneering .ppt
computer net and cabling wires for engioneering .pptCarloCimacio
 
Computer Hardware for computer enthusiast.ppt
Computer Hardware for computer enthusiast.pptComputer Hardware for computer enthusiast.ppt
Computer Hardware for computer enthusiast.pptCarloCimacio
 
An_Overview_of_Intellectual_Property.ppt
An_Overview_of_Intellectual_Property.pptAn_Overview_of_Intellectual_Property.ppt
An_Overview_of_Intellectual_Property.pptCarloCimacio
 

Mehr von CarloCimacio (7)

The Law that protect the cyberspace.pptx
The Law that protect the cyberspace.pptxThe Law that protect the cyberspace.pptx
The Law that protect the cyberspace.pptx
 
Intro_to_Arduino_-_v30dadasdadadadaasda.ppt
Intro_to_Arduino_-_v30dadasdadadadaasda.pptIntro_to_Arduino_-_v30dadasdadadadaasda.ppt
Intro_to_Arduino_-_v30dadasdadadadaasda.ppt
 
pc assembly 1111111pc assembly 1111111- Copy.pptx
pc assembly 1111111pc assembly 1111111- Copy.pptxpc assembly 1111111pc assembly 1111111- Copy.pptx
pc assembly 1111111pc assembly 1111111- Copy.pptx
 
484768 23424242 2523522 345343242423.pptx
484768 23424242 2523522 345343242423.pptx484768 23424242 2523522 345343242423.pptx
484768 23424242 2523522 345343242423.pptx
 
computer net and cabling wires for engioneering .ppt
computer net and cabling wires for engioneering .pptcomputer net and cabling wires for engioneering .ppt
computer net and cabling wires for engioneering .ppt
 
Computer Hardware for computer enthusiast.ppt
Computer Hardware for computer enthusiast.pptComputer Hardware for computer enthusiast.ppt
Computer Hardware for computer enthusiast.ppt
 
An_Overview_of_Intellectual_Property.ppt
An_Overview_of_Intellectual_Property.pptAn_Overview_of_Intellectual_Property.ppt
An_Overview_of_Intellectual_Property.ppt
 

KĂĽrzlich hochgeladen

(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130Suhani Kapoor
 
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...ranjana rawat
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxpranjaldaimarysona
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingrakeshbaidya232001
 
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxthe ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxhumanexperienceaaa
 
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingrknatarajan
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxJoĂŁo Esperancinha
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSSIVASHANKAR N
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)Suman Mia
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxAsutosh Ranjan
 
Model Call Girl in Narela Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Narela Delhi reach out to us at 🔝8264348440🔝Model Call Girl in Narela Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Narela Delhi reach out to us at 🔝8264348440🔝soniya singh
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxupamatechverse
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Christo Ananth
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 

KĂĽrzlich hochgeladen (20)

(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
 
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptx
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writing
 
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
 
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxthe ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
 
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptx
 
Roadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and RoutesRoadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and Routes
 
Model Call Girl in Narela Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Narela Delhi reach out to us at 🔝8264348440🔝Model Call Girl in Narela Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Narela Delhi reach out to us at 🔝8264348440🔝
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptx
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
 

Algorithms the fundamentals, For computer Science.ppt

  • 2. 2 Chapter Goals • Describe the computer problem-solving process and relate it to Polya’s How to Solve It list • Distinguish between a simple type and a composite type • Describe two composite data-structuring mechanisms • Recognize a recursive problem and write a recursive algorithm to solve it • Distinguish between an unsorted array and a sorted array • Distinguish between a selection sort and an insertion sort
  • 3. 3 Chapter Goals • Describe the Quicksort algorithm • Apply the selection sort, the bubble sort, insertion sort, and Quicksort to an array of items by hand • Apply the binary search algorithm • Demonstrate an understanding of the algorithms in this chapter by hand-simulating them with a sequence of items
  • 4. 4 Problem Solving Problem solving The act of finding a solution to a perplexing, distressing, vexing, or unsettled question How do you define problem solving?
  • 5. 5 Problem Solving How to Solve It: A New Aspect of Mathematical Method by George Polya "How to solve it list" written within the context of mathematical problems But list is quite general We can use it to solve computer related problems!
  • 6. 6 Problem Solving How do you solve problems? Understand the problem Devise a plan Carry out the plan Look back
  • 7. 7 Strategies Ask questions! – What do I know about the problem? – What is the information that I have to process in order the find the solution? – What does the solution look like? – What sort of special cases exist? – How will I recognize that I have found the solution?
  • 8. 8 Strategies Ask questions! Never reinvent the wheel! Similar problems come up again and again in different guises A good programmer recognizes a task or subtask that has been solved before and plugs in the solution Can you think of two similar problems?
  • 9. 9 Strategies Divide and Conquer! Break up a large problem into smaller units and solve each smaller problem – Applies the concept of abstraction – The divide-and-conquer approach can be applied over and over again until each subtask is manageable
  • 10. 10 Computer Problem-Solving Analysis and Specification Phase Analyze Specification Algorithm Development Phase Develop algorithm Test algorithm Implementation Phase Code algorithm Test algorithm Maintenance Phase Use Maintain Can you name a recurring theme?
  • 11. 11 Phase Interactions Should we add another arrow? (What happens if the problem is revised?)
  • 12. 12 Algorithms Algorithm A set of unambiguous instructions for solving a problem or subproblem in a finite amount of time using a finite amount of data Abstract Step An algorithmic step containing unspecified details Concrete Step An algorithm step in which all details are specified
  • 13. 13 Developing an Algorithm Two methodologies used to develop computer solutions to a problem – Top-down design focuses on the tasks to be done – Object-oriented design focuses on the data involved in the solution (We will discuss this design in Ch. 9)
  • 14. 14 Summary of Methodology Analyze the Problem Understand the problem!! Develop a plan of attack List the Main Tasks (becomes Main Module) Restate problem as a list of tasks (modules) Give each task a name Write the Remaining Modules Restate each abstract module as a list of tasks Give each task a name Re-sequence and Revise as Necessary Process ends when all steps (modules) are concrete
  • 15. 15 Top-Down Design Process continues for as many levels as it takes to make every step concrete Name of (sub)problem at one level becomes a module at next lower level
  • 16. 16 Control Structures Control structure An instruction that determines the order in which other instructions in a program are executed Can you name the ones we defined in the functionality of pseudocode?
  • 17. 17 Selection Statements Flow of control of if statement
  • 18. 18 Algorithm with Selection Problem: Write the appropriate dress for a given temperature. Write "Enter temperature" Read temperature Determine Dress Which statements are concrete? Which statements are abstract?
  • 19. 19 Algorithm with Selection IF (temperature > 90) Write “Texas weather: wear shorts” ELSE IF (temperature > 70) Write “Ideal weather: short sleeves are fine” ELSE IF (temperature > 50) Write “A little chilly: wear a light jacket” ELSE IF (temperature > 32) Write “Philadelphia weather: wear a heavy coat” ELSE Write “Stay inside” Determine Dress
  • 20. 20 Looping Statements Flow of control of while statement
  • 21. 21 Looping Statements Set sum to 0 Set count to 1 While (count <= limit) Read number Set sum to sum + number Increment count Write "Sum is " + sum Why is it called a count-controlled loop? A count-controlled loop
  • 22. 22 Looping Statements Set sum to 0 Set allPositive to true WHILE (allPositive) Read number IF (number > 0) Set sum to sum + number ELSE Set allPositive to false Write "Sum is " + sum Why is it called an event-conrolled loop? What is the event? An event-controlled loop
  • 23. 23 Looping Statements Read in square Calculate the square root Write out square and the square root Calculate Square Root Are there any abstract steps?
  • 24. 24 Looping Statements Set epsilon to 1 WHILE (epsilon > 0.001) Calculate new guess Set epsilon to abs(square - guess * guess) Are there any abstract steps? Calculate square root
  • 25. 25 Looping Statements Set newGuess to (guess + (square/guess)) / 2.0 Are there any abstract steps? Calculate new guess
  • 26. 26 Looping Statements Read in square Set guess to square/4 Set epsilon to 1 WHILE (epsilon > 0.001) Calculate new guess Set epsilon to abs(square - guess * guess) Write out square and the guess
  • 27. 27 Composite Data Types Records A named heterogeneous collection of items in which individual items are accessed by name. For example, we could bundle name, age and hourly wage items into a record named Employee Arrays A named homogeneous collection of items in which an individual item is accessed by its position (index) within the collection
  • 28. Composite Data Types Employee name age hourly/Wage Following algorithm, stores values into the fields of record: Employee employee // Declare and Employee variable Set employee.name to “Frank Jones” Set employee.age to 32 Set employee.hourlyWage to 27.50 28
  • 30. Arrays • As data is being read into an array, a counter is updated so that we always know how many data items were stored • If the array is called list, that with which we are working is from list[0] to list [length-1] 30
  • 32. 32 Composite Data Types integer data[20] Write “How many values?” Read length Set index to 0 WHILE (index < length) Read data[index] Set index to index + 1 Fill an array numbers with limit values
  • 33. Sequential Search of an Unsorted Array A sequential search examines each item in turn and compares it to the one we are searching. If it matches, we have found the item. If not, we look at the next item in the array. We stop either when we have found the item or when we have looked at all the items and not found a match Thus, a loop with two ending conditions 33
  • 34. Sequential Search Algorithm Set Position to 0 Set found to FALSE WHILE (position < length AND NOT found ) IF (numbers [position] equals searchitem) Set Found to TRUE ELSE Set position to position + 1 34
  • 35. 35 Booleans Boolean Operators A Bolean variable is a location in memory that can contain either true or false Boolean operator AND returns TRUE if both operands are true and FALSE otherwise Boolean operator OR returns TRUE if either operand is true and FALSE otherwise Boolean operator NOT returns TRUE if its operand is false and FALSE if its operand is true
  • 36. 36 Sorted Arrays • The values stored in an array have unique keys of a type for which the relational operators are defined. • Sorting rearranges the elements into either ascending or descending order within the array. • A sorted array is one in which the elements are in order
  • 37. Sequential Search in a Sorted Array If items in an array are sorted, we can stop looking when we pass the place where the item would be it were present in the array 37 Is this better?
  • 38. 38 A Sorted Array A sorted array of integers
  • 39. 39 A Sorted Array Read in array of values Write “Enter value for which to search” Read searchItem Set found to TRUE if searchItem is there IF (found) Write “Item is found” ELSE Write “Item is not found”
  • 40. 40 A Sorted Array Set found to TRUE if searchItem is there Set index to 0 Set found to FALSE WHILE (index < length AND NOT found) IF (data[index] equals searchItem) Set found to TRUE ELSE IF (data[index] > searchItem) Set index to length ELSE Set index to index + 1
  • 41. 41 Binary Search Sequential search Search begins at the beginning of the list and continues until the item is found or the entire list has been searched Binary search (list must be sorted) Search begins at the middle and finds the item or eliminates half of the unexamined items; process is repeated on the half where the item might be Say that again…
  • 42. 42 Binary Search Set first to 0 Set last to length-1 Set found to FALSE WHILE (first <= last AND NOT found) Set middle to (first + last)/ 2 IF (item equals data[middle])) Set found to TRUE ELSE IF (item < data[middle]) Set last to middle – 1 ELSE Set first to middle + 1 RETURN found
  • 43. 43 Binary Search Figure 7.10 Trace of the binary search
  • 44. 44 Binary Search Table 7.1 Average Number of Comparisons Is a binary search always better?
  • 45. 45 Sorting Sorting Arranging items in a collection so that there is an ordering on one (or more) of the fields in the items Sort Key The field (or fields) on which the ordering is based Sorting algorithms Algorithms that order the items in the collection based on the sort key Why is sorting important?
  • 46. 46 Selection Sort Given a list of names, put them in alphabetical order – Find the name that comes first in the alphabet, and write it on a second sheet of paper – Cross out the name off the original list – Continue this cycle until all the names on the original list have been crossed out and written onto the second list, at which point the second list contains the same items but in sorted order
  • 47. 47 Selection Sort A slight adjustment to this manual approach does away with the need to duplicate space – As you cross a name off the original list, a free space opens up – Instead of writing the value found on a second list, exchange it with the value currently in the position where the crossed-off item should go
  • 48. 48 Selection Sort Figure 7.11 Example of a selection sort (sorted elements are shaded)
  • 49. 49 Selection Sort Selection Sort Set firstUnsorted to 0 WHILE (not sorted yet) Find smallest unsorted item Swap firstUnsorted item with the smallest Set firstUnsorted to firstUnsorted + 1 Not sorted yet current < length – 1
  • 50. 50 Selection Sort Find smallest unsorted item Set indexOfSmallest to firstUnsorted Set index to firstUnsorted + 1 WHILE (index <= length – 1) IF (data[index] < data[indexOfSmallest]) Set indexOfSmallest to index Set index to index + 1 Set index to indexOfSmallest
  • 51. 51 Selection Sort Swap firstUnsorted with smallest Set tempItem to data[firstUnsorted] Set data[firstUnsorted] to data[indexOfSmallest] Set data[indexOfSmallest] to tempItem
  • 52. 52 Bubble Sort Bubble Sort uses the same strategy: Find the next item Put it into its proper place But uses a different scheme for finding the next item Starting with the last list element, compare successive pairs of elements, swapping whenever the bottom element of the pair is smaller than the one above it
  • 54. 54 Bubble Sort Bubble sort is very slow! Can you see a way to make it faster? Under what circumstances is bubble sort fast?
  • 55. 55 Bubble Sort Bubble Sort Set firstUnsorted to 0 Set index to firstUnsorted + 1 Set swap to TRUE WHILE (index < length AND swap) Set swap to FALSE “Bubble up” the smallest item in unsorted part Set firstUnsorted to firstUnsorted + 1
  • 56. 56 Bubble Sort Bubble up Set index to length – 1 WHILE (index > firstUnsorted + 1) IF (data[index] < data[index – 1]) Swap data[index] and data[index – 1] Set swap to TRUE Set index to index - 1
  • 57. Insertion Sort If you have only one item in the array, it is already sorted. If you have two items, you can compare and swamp them if necessary, sorting the first two with respect to themselves. Take the third item and put it into its place relative to the first two Now the first three items are sorted with respect to one another 57
  • 58. Insertion Sort The item being added to the sorted portion can be bubbled up as in the bubble sort 58
  • 59. Insertion Sort InsertionSort Set current to 1 WHILE (current < length) Set index to current Set placeFound to FALSE WHILE (index > 0 AND NOT placeFound) IF (data[index] < data[index – 1]) Swap data[index] and data[index – 1] Set index to index – 1 ELSE Set placeFound to TRUE Set current to current + 1 59
  • 60. 60 Subprogram Statements We can give a section of code a name and use that name as a statement in another part of the program When the name is encountered, the processing in the other part of the program halts while the named code is executed Remember?
  • 61. 61 Subprogram Statements What if the subprogram needs data from the calling unit? Parameters Identifiers listed in parentheses beside the subprogram declaration; sometimes called formal parameters Arguments Identifiers listed in parentheses on the subprogram call; sometimes called actual parameters
  • 62. 62 Subprogram Statements Figure 7.14 Subprogram flow of control
  • 64. 64 Recursion Recursion The ability of a subprogram to call itself Base case The case to which we have an answer General case The case that expresses the solution in terms of a call to itself with a smaller version of the problem
  • 65. 65 Recursion For example, the factorial of a number is defined as the number times the product of all the numbers between itself and 0: N! = N * (N  1)! Base case Factorial(0) = 1 (0! is 1) General Case Factorial(N) = N * Factorial(N-1)
  • 66. 66 Recursion Write “Enter n” Read n Set result to Factorial(n) Write result + “ is the factorial of “ + n Factorial(n) IF (n equals 0) RETURN 1 ELSE RETURN n * Factorial(n-1)
  • 67. 67 Recursion BinarySearch (first, last) IF (first > last) RETURN FALSE ELSE Set middle to (first + last)/ 2 IF (item equals data[middle]) RETURN TRUE ELSE IF (item < data[middle]) BinarySearch (first, middle – 1) ELSE BinarySearch (middle + 1, last
  • 68. 68 Quicksort Ordering a list using the Quicksort algorithm It is easier to sort a smaller number of items: Sort A…F, G…L, M…R, and S…Z and A…Z is sorted
  • 69. Quicksort algorithm With each attempt to sort the stack of data elements, the stack is divided at a splitting value, splitVal, and the same approach is used to sort each of the smaller stacks (a smaller case) Process continues until the small stacks do not need to be divided further (the base case) The variables first and last in Quicksort algorithm reflect the part of the array data that is currently being processed 69
  • 70. 70 Quicksort Quicksort(first, last) IF (first < last) // There is more than one item Select splitVal Split (splitVal) // Array between first and // splitPoint–1 <= splitVal // data[splitPoint] = splitVal // Array between splitPoint + 1 // and last > splitVal Quicksort (first, splitPoint - 1) Quicksort (splitPoint + 1, last)
  • 72. 72 Quicksort Split(splitVal) Set left to first + 1 Set right to last WHILE (left <= right) Increment left until data[left] > splitVal OR left > right Decrement right until data[right] < splitVal OR left > right IF(left < right) Swap data[left] and data[right] Set splitPoint to right Swap data[first] and data[splitPoint] Return splitPoint
  • 74. 74 Important Threads Information Hiding The practice of hiding the details of a module with the goal of controlling access to it Abstraction A model of a complex system that includes only the details essential to the viewer Information Hiding and Abstraction are two sides of the same coin
  • 75. 75 Important Threads Data abstraction Separation of the logical view of data from their implementation Procedural abstraction Separation of the logical view of actions from their implementation Control abstraction Separation of the logical view of a control structure from its implementation
  • 76. 76 Important Threads Identifiers Names given to data and actions, by which – we access the data and Read firstName, Set count to count + 1 – execute the actions Split(splitVal) Giving names to data and actions is a form of abstraction
  • 77. 77 Important Threads Abstraction is the most powerful tool people have for managing complexity!
  • 78. 78 Ethical Issues Open-Source Software Development What are the advantages and disadvantages of open-source software? What does the success of Linux suggest about the future of open-source software? Should open-source software be licensed and subject to standard copyright laws?
  • 79. 79 Who am I? My wife Jill and I are holding the medal I received when I was knighted. What university did I retire from and where am I working now?
  • 80. 80 Who am I? I am a mathematician. Why is my picture in a book about computer science?
  • 81. 81 Do you know? What writing system did the Rosetta stone serve as a key to translating? What are some of the adverse consequences of piggybacking for free off someone else’s paid Wi-Fi connection? What, if any, legal privacy protections does a blogger have to resist an employer seeking to fire an anonymous blogging employee?