SlideShare a Scribd company logo
Algorithms
Reggie Niccolo Santos
UP Information Technology Development Center
(ITDC)
Slideshare: reggieniccolo.santos
Adapted from Aaron Bloomfield’s set of slides
Outline
What is an algorithm?
Algorithm 1: Maximum element
Properties of algorithms
Outline
!
Searching algorithms
Algorithm 2: Linear search
Algorithm 3: Binary search
Outline
Sorting algorithms:
Algorithm 4: Bubble sort
Algorithm 5: Insertion sort
What is an
algorithm?
“a finite set of precise
instructions for performing a
computation or for solving a
problem”
What is an
algorithm?
■
A program is one type of algorithm
All programs are algorithms
Not all algorithms are programs!
What is an
algorithm?
■
Examples:
■
directions to somebody’s house
■
a recipe for cooking a cake
■ the steps to compute the cosine
of 90° is an algorithm
Some algorithms are
harder than others
Some algorithms are easy
■
Finding the largest (or smallest)
value in a list
■
Finding a specific value in a list
Some algorithms are a bit harder
■
Sorting a list
Some algorithms are
harder than others
Some algorithms are very hard
■
Finding the shortest path between
Rizal and Quezon City
Some algorithms are essentially
impossible
■
Factoring large composite numbers
Algorithm 1:
Maximum element
Given a list, how do we find the
maximum element in the list?
!
To express the algorithm, we’ll use
pseudocode
■ Pseudocode is kinda like a
programming language, but not really
Algorithm 1:
Maximum element
Algorithm for finding the maximum element in a
list:
!
procedure max (a1, a2, …, an: integers)
max := a1
for i := 2 to n
if max < ai then max := ai
!
{max is the largest element}
Maximum element
running time
How long does this take?
!
If the list has n elements, worst case
scenario is that it takes n “steps”
■
Here, a step is considered a
single step through the list
Properties of
algorithms
Algorithms generally share a set of
properties:
■ Input: what the algorithm takes in as input
■ Output: what the algorithm produces as
output
■ Definiteness: the steps are defined
precisely
■ Correctness: should produce the correct
output
Properties of
algorithms
Algorithms generally share a set of
properties:
■ Finiteness: the steps required should be
finite
■ Effectiveness: each step must be able to
be performed in a finite amount of time
■ Generality: the algorithm should be
applicable to all problems of a
similar form
Searching
algorithms
Given a list, find a specific element in
the list
!
We will see two types
■
Linear search
a.k.a. sequential search
■
Binary search
Algorithm 2: Linear
search
Given a list, find a specific element in the list
■ List does NOT have to be sorted!
!
procedure linear_search (x: integer; a1, a2, …, an:
integers)
i := 1
while ( i ≤ n and x ≠ ai )
i := i + 1
if i ≤ n then location := i
else location := 0
!
{location is the subscript of the term that equals x, or
it is 0 if x is not found}
Linear search
running time
How long does this take?
!
If the list has n elements, worst case
scenario is that it takes n “steps”
■
Here, a step is considered a
single step through the list
Algorithm 3: Binary
search
Given a list, find a specific element in the list
■ List MUST be sorted!
Each time it iterates through, it cuts the list in half
!
procedure binary_search (x: integer; a1
, a2
, …, an
: increasing integers)
i := 1 { i is left endpoint of search interval }
j := n{ j is right endpoint of search interval }
while i < j
begin
m := (i+j)/2 { m is the point in the middle }
if x > am
then i := m+1
else j := m
end
if x = ai
then location := i
else location := 0
!
{location is the subscript of the term that equals x, or it is 0 if x is
not found}
Algorithm 3: Binary
search
A somewhat alternative view of what
a binary search does…
Binary search
running time
How long does this take (worst case)?
!
If the list has 8 elements
■ It takes 3 steps
If the list has 16 elements
■ It takes 4 steps
If the list has 64 elements
■ It takes 6 steps
!
If the list has n elements
■ It takes log2 n steps
Sorting algorithms
Given a list, put it into some order
■ Numerical, lexicographic, etc.
!
We will see two types
■ Bubble sort
■ Insertion sort
Algorithm 4:
Bubble sort
One of the most simple sorting algorithms
■ Also one of the least efficient
It takes successive elements and “bubbles” them up
the list
!
procedure bubble_sort (a1, a2, …, an)
for i := 1 to n-1
for j := 1 to n-i
if aj > aj+1
then interchange aj and aj+1
{ a1, …, an are in increasing order }
Algorithm 4:
Bubble sort
An example using physical objects…
Bubble sort running
time
Bubble sort algorithm:
for i := 1 to n-1
for j := 1 to n-i
if aj > aj+1
then interchange aj and aj+1
!
Outer for loop does n-1 iterations
Inner for loop does
■ n-1 iterations the first time
■ n-2 iterations the second time
■ …
■ 1 iteration the last time
Total: (n-1) + (n-2) + (n-3) + … + 2 + 1 = (n
2
-n)/2
■ We can say that’s “about” n
2
time
Algorithm 5:
Insertion sort
Another simple (and inefficient) algorithm
It starts with a list with one element, and inserts new elements into their proper
place in the sorted part of the list
!
procedure insertion_sort (a1, a2, …, an)
for j := 2 to n
begin
i := 1
while aj > ai
i := i +1
m := aj
for k := 0 to j-i-1
aj-k := aj-k-1
ai := m
end { a1, a2, …, an are sorted }
Insertion sort
running time
Outer for loop runs n-1 times
In the inner for loop:
■
Worst case is when the while keeps i at
1, and the for loop runs lots of times
■
If i is 1, the inner for loop runs 1
time (k goes from 0 to 0) on the first
iteration, 1 time on the second, up to
n-2 times on the last iteration
Total is 1 + 2 + … + n-2 = (n-1)(n-2)/2
■
We can say that’s “about” n2
time
Comparison of
running times
Searches
■ Linear: n steps
■ Binary: log2 n steps
■ Binary search is about as fast as you can get
!
Sorts
■ Bubble: n
2
steps
■ Insertion: n
2
steps
■ There are other, more efficient, sorting techniques
In principle, the fastest are heap sort, quick sort, and merge sort
These each take take n * log2 n steps
In practice, quick sort is the fastest, followed by
merge sort
Summary
What is an algorithm?
Algorithm 1: Maximum element
Properties of algorithms
Summary
!
Searching algorithms
Algorithm 2: Linear search
Algorithm 3: Binary search
Summary
Sorting algorithms:
Algorithm 4: Bubble sort
Algorithm 5: Insertion sort
Thank you!
Questions? :D

More Related Content

Algorithms - Aaron Bloomfield

  • 1. Algorithms Reggie Niccolo Santos UP Information Technology Development Center (ITDC) Slideshare: reggieniccolo.santos Adapted from Aaron Bloomfield’s set of slides
  • 2. Outline What is an algorithm? Algorithm 1: Maximum element Properties of algorithms
  • 3. Outline ! Searching algorithms Algorithm 2: Linear search Algorithm 3: Binary search
  • 4. Outline Sorting algorithms: Algorithm 4: Bubble sort Algorithm 5: Insertion sort
  • 5. What is an algorithm? “a finite set of precise instructions for performing a computation or for solving a problem”
  • 6. What is an algorithm? ■ A program is one type of algorithm All programs are algorithms Not all algorithms are programs!
  • 7. What is an algorithm? ■ Examples: ■ directions to somebody’s house ■ a recipe for cooking a cake ■ the steps to compute the cosine of 90° is an algorithm
  • 8. Some algorithms are harder than others Some algorithms are easy ■ Finding the largest (or smallest) value in a list ■ Finding a specific value in a list Some algorithms are a bit harder ■ Sorting a list
  • 9. Some algorithms are harder than others Some algorithms are very hard ■ Finding the shortest path between Rizal and Quezon City Some algorithms are essentially impossible ■ Factoring large composite numbers
  • 10. Algorithm 1: Maximum element Given a list, how do we find the maximum element in the list? ! To express the algorithm, we’ll use pseudocode ■ Pseudocode is kinda like a programming language, but not really
  • 11. Algorithm 1: Maximum element Algorithm for finding the maximum element in a list: ! procedure max (a1, a2, …, an: integers) max := a1 for i := 2 to n if max < ai then max := ai ! {max is the largest element}
  • 12. Maximum element running time How long does this take? ! If the list has n elements, worst case scenario is that it takes n “steps” ■ Here, a step is considered a single step through the list
  • 13. Properties of algorithms Algorithms generally share a set of properties: ■ Input: what the algorithm takes in as input ■ Output: what the algorithm produces as output ■ Definiteness: the steps are defined precisely ■ Correctness: should produce the correct output
  • 14. Properties of algorithms Algorithms generally share a set of properties: ■ Finiteness: the steps required should be finite ■ Effectiveness: each step must be able to be performed in a finite amount of time ■ Generality: the algorithm should be applicable to all problems of a similar form
  • 15. Searching algorithms Given a list, find a specific element in the list ! We will see two types ■ Linear search a.k.a. sequential search ■ Binary search
  • 16. Algorithm 2: Linear search Given a list, find a specific element in the list ■ List does NOT have to be sorted! ! procedure linear_search (x: integer; a1, a2, …, an: integers) i := 1 while ( i ≤ n and x ≠ ai ) i := i + 1 if i ≤ n then location := i else location := 0 ! {location is the subscript of the term that equals x, or it is 0 if x is not found}
  • 17. Linear search running time How long does this take? ! If the list has n elements, worst case scenario is that it takes n “steps” ■ Here, a step is considered a single step through the list
  • 18. Algorithm 3: Binary search Given a list, find a specific element in the list ■ List MUST be sorted! Each time it iterates through, it cuts the list in half ! procedure binary_search (x: integer; a1 , a2 , …, an : increasing integers) i := 1 { i is left endpoint of search interval } j := n{ j is right endpoint of search interval } while i < j begin m := (i+j)/2 { m is the point in the middle } if x > am then i := m+1 else j := m end if x = ai then location := i else location := 0 ! {location is the subscript of the term that equals x, or it is 0 if x is not found}
  • 19. Algorithm 3: Binary search A somewhat alternative view of what a binary search does…
  • 20. Binary search running time How long does this take (worst case)? ! If the list has 8 elements ■ It takes 3 steps If the list has 16 elements ■ It takes 4 steps If the list has 64 elements ■ It takes 6 steps ! If the list has n elements ■ It takes log2 n steps
  • 21. Sorting algorithms Given a list, put it into some order ■ Numerical, lexicographic, etc. ! We will see two types ■ Bubble sort ■ Insertion sort
  • 22. Algorithm 4: Bubble sort One of the most simple sorting algorithms ■ Also one of the least efficient It takes successive elements and “bubbles” them up the list ! procedure bubble_sort (a1, a2, …, an) for i := 1 to n-1 for j := 1 to n-i if aj > aj+1 then interchange aj and aj+1 { a1, …, an are in increasing order }
  • 23. Algorithm 4: Bubble sort An example using physical objects…
  • 24. Bubble sort running time Bubble sort algorithm: for i := 1 to n-1 for j := 1 to n-i if aj > aj+1 then interchange aj and aj+1 ! Outer for loop does n-1 iterations Inner for loop does ■ n-1 iterations the first time ■ n-2 iterations the second time ■ … ■ 1 iteration the last time Total: (n-1) + (n-2) + (n-3) + … + 2 + 1 = (n 2 -n)/2 ■ We can say that’s “about” n 2 time
  • 25. Algorithm 5: Insertion sort Another simple (and inefficient) algorithm It starts with a list with one element, and inserts new elements into their proper place in the sorted part of the list ! procedure insertion_sort (a1, a2, …, an) for j := 2 to n begin i := 1 while aj > ai i := i +1 m := aj for k := 0 to j-i-1 aj-k := aj-k-1 ai := m end { a1, a2, …, an are sorted }
  • 26. Insertion sort running time Outer for loop runs n-1 times In the inner for loop: ■ Worst case is when the while keeps i at 1, and the for loop runs lots of times ■ If i is 1, the inner for loop runs 1 time (k goes from 0 to 0) on the first iteration, 1 time on the second, up to n-2 times on the last iteration Total is 1 + 2 + … + n-2 = (n-1)(n-2)/2 ■ We can say that’s “about” n2 time
  • 27. Comparison of running times Searches ■ Linear: n steps ■ Binary: log2 n steps ■ Binary search is about as fast as you can get ! Sorts ■ Bubble: n 2 steps ■ Insertion: n 2 steps ■ There are other, more efficient, sorting techniques In principle, the fastest are heap sort, quick sort, and merge sort These each take take n * log2 n steps In practice, quick sort is the fastest, followed by merge sort
  • 28. Summary What is an algorithm? Algorithm 1: Maximum element Properties of algorithms
  • 29. Summary ! Searching algorithms Algorithm 2: Linear search Algorithm 3: Binary search
  • 30. Summary Sorting algorithms: Algorithm 4: Bubble sort Algorithm 5: Insertion sort