algorithms - aaron bloomfield
DESCRIPTION
* What is an algorithm? * Algorithm 1: Maximum element * Properties of algorithms * Searching algorithms ** Algorithm 2: Linear search ** Algorithm 3: Binary search * Sorting algorithms ** Algorithm 4: Bubble sort ** Algorithm 5: Insertion sortTRANSCRIPT
![Page 1: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/1.jpg)
AlgorithmsReggie Niccolo Santos
UP Information Technology Development Center (ITDC)
Slideshare: reggieniccolo.santos Adapted from Aaron Bloomfield’s set of slides
![Page 2: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/2.jpg)
Outline
What is an algorithm?
Algorithm 1: Maximum element
Properties of algorithms
![Page 3: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/3.jpg)
Outline
!
Searching algorithms
Algorithm 2: Linear search
Algorithm 3: Binary search
![Page 4: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/4.jpg)
Outline
Sorting algorithms:
Algorithm 4: Bubble sort
Algorithm 5: Insertion sort
![Page 5: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/5.jpg)
What is an algorithm?
“a finite set of precise instructions for performing a computation or for solving a problem”
![Page 6: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/6.jpg)
What is an algorithm?
■ A program is one type of algorithm All programs are algorithms Not all algorithms are programs!
![Page 7: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/7.jpg)
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
![Page 8: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/8.jpg)
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
![Page 9: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/9.jpg)
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
![Page 10: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/10.jpg)
Algorithm 1: Maximum elementGiven 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
![Page 11: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/11.jpg)
Algorithm 1: Maximum elementAlgorithm 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}
![Page 12: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/12.jpg)
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
![Page 13: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/13.jpg)
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
![Page 14: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/14.jpg)
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
![Page 15: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/15.jpg)
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
![Page 16: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/16.jpg)
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}
![Page 17: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/17.jpg)
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
![Page 18: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/18.jpg)
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}
![Page 19: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/19.jpg)
Algorithm 3: Binary search
A somewhat alternative view of what a binary search does…
![Page 20: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/20.jpg)
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
![Page 21: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/21.jpg)
Sorting algorithms
Given a list, put it into some order ■ Numerical, lexicographic, etc.
!
We will see two types ■ Bubble sort ■ Insertion sort
![Page 22: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/22.jpg)
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 }
![Page 23: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/23.jpg)
Algorithm 4: Bubble sort
An example using physical objects…
![Page 24: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/24.jpg)
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 = (n2-n)/2
■ We can say that’s “about” n2 time
![Page 25: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/25.jpg)
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 }
![Page 26: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/26.jpg)
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
![Page 27: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/27.jpg)
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: n2 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
![Page 28: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/28.jpg)
Summary
What is an algorithm?
Algorithm 1: Maximum element
Properties of algorithms
![Page 29: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/29.jpg)
Summary
!
Searching algorithms
Algorithm 2: Linear search
Algorithm 3: Binary search
![Page 30: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/30.jpg)
Summary
Sorting algorithms:
Algorithm 4: Bubble sort
Algorithm 5: Insertion sort
![Page 31: Algorithms - Aaron Bloomfield](https://reader031.vdocuments.net/reader031/viewer/2022013118/556442bdd8b42ad3308b5736/html5/thumbnails/31.jpg)
Thank you! Questions? :D