SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Heap sort
Heap sortHeap sort
Heap sort
 
Data structure , stack , queue
Data structure , stack , queueData structure , stack , queue
Data structure , stack , queue
 
DSA (Data Structure and Algorithm) Questions
DSA (Data Structure and Algorithm) QuestionsDSA (Data Structure and Algorithm) Questions
DSA (Data Structure and Algorithm) Questions
 
Algorithms Lecture 5: Sorting Algorithms II
Algorithms Lecture 5: Sorting Algorithms IIAlgorithms Lecture 5: Sorting Algorithms II
Algorithms Lecture 5: Sorting Algorithms II
 
Red black tree
Red black treeRed black tree
Red black tree
 
Data Structures- Hashing
Data Structures- Hashing Data Structures- Hashing
Data Structures- Hashing
 
Binary search algorithm
Binary search algorithmBinary search algorithm
Binary search algorithm
 
Trees in Data Structure
Trees in Data StructureTrees in Data Structure
Trees in Data Structure
 
Data structure Stack
Data structure StackData structure Stack
Data structure Stack
 
data structure
data structuredata structure
data structure
 
Data Structure: TREES
Data Structure: TREESData Structure: TREES
Data Structure: TREES
 
Algorithm And analysis Lecture 03& 04-time complexity.
 Algorithm And analysis Lecture 03& 04-time complexity. Algorithm And analysis Lecture 03& 04-time complexity.
Algorithm And analysis Lecture 03& 04-time complexity.
 
Data Visualization Tools in Python
Data Visualization Tools in PythonData Visualization Tools in Python
Data Visualization Tools in Python
 
Optimal binary search tree dynamic programming
Optimal binary search tree   dynamic programmingOptimal binary search tree   dynamic programming
Optimal binary search tree dynamic programming
 
Rabin karp string matcher
Rabin karp string matcherRabin karp string matcher
Rabin karp string matcher
 
Dsa circular queue
Dsa circular queueDsa circular queue
Dsa circular queue
 
Infix to postfix expression in ds
Infix to postfix expression in dsInfix to postfix expression in ds
Infix to postfix expression in ds
 
Binary Search Tree
Binary Search TreeBinary Search Tree
Binary Search Tree
 
Binary trees1
Binary trees1Binary trees1
Binary trees1
 
Queue
QueueQueue
Queue
 

Destaque

Introduction to "Origins, Evolution & Creation"
Introduction to "Origins, Evolution & Creation"Introduction to "Origins, Evolution & Creation"
Introduction to "Origins, Evolution & Creation"
John Lynch
 
History of Creationism, Parts II & III
History of Creationism, Parts II & IIIHistory of Creationism, Parts II & III
History of Creationism, Parts II & III
John Lynch
 
Dc parent 14 2
Dc parent 14 2Dc parent 14 2
Dc parent 14 2
mtaft
 
The Scientific Revolution
The Scientific RevolutionThe Scientific Revolution
The Scientific Revolution
John Lynch
 
One Long Argument
One Long ArgumentOne Long Argument
One Long Argument
John Lynch
 

Destaque (20)

National Air And Space Museum Washington DC
National Air And Space Museum Washington DCNational Air And Space Museum Washington DC
National Air And Space Museum Washington DC
 
Sorting pnk
Sorting pnkSorting pnk
Sorting pnk
 
Sorting algorithms
Sorting algorithmsSorting algorithms
Sorting algorithms
 
Was There A Darwinian Revolution
Was There A Darwinian RevolutionWas There A Darwinian Revolution
Was There A Darwinian Revolution
 
Introduction to Algorithms
Introduction to AlgorithmsIntroduction to Algorithms
Introduction to Algorithms
 
How We Got Where We Are: 40 Years of Planning...
How We Got Where We Are: 40 Years of Planning...How We Got Where We Are: 40 Years of Planning...
How We Got Where We Are: 40 Years of Planning...
 
sPen Data Management
sPen Data ManagementsPen Data Management
sPen Data Management
 
Introduction to "Origins, Evolution & Creation"
Introduction to "Origins, Evolution & Creation"Introduction to "Origins, Evolution & Creation"
Introduction to "Origins, Evolution & Creation"
 
History of Creationism, Parts II & III
History of Creationism, Parts II & IIIHistory of Creationism, Parts II & III
History of Creationism, Parts II & III
 
Dc parent 14 2
Dc parent 14 2Dc parent 14 2
Dc parent 14 2
 
CSS 3, Style and Beyond
CSS 3, Style and BeyondCSS 3, Style and Beyond
CSS 3, Style and Beyond
 
History of Google Local from 2004-2011
History of Google Local from 2004-2011 History of Google Local from 2004-2011
History of Google Local from 2004-2011
 
Introduction to Information Technology ch 02_a
Introduction to Information Technology ch 02_aIntroduction to Information Technology ch 02_a
Introduction to Information Technology ch 02_a
 
The Scientific Revolution
The Scientific RevolutionThe Scientific Revolution
The Scientific Revolution
 
One Long Argument
One Long ArgumentOne Long Argument
One Long Argument
 
Google
GoogleGoogle
Google
 
Chap04alg
Chap04algChap04alg
Chap04alg
 
Google Algorithm Change History - 2k14-2k16.
Google Algorithm Change History - 2k14-2k16.Google Algorithm Change History - 2k14-2k16.
Google Algorithm Change History - 2k14-2k16.
 
Google at a glance 1998 - 2008
Google at a glance 1998 - 2008Google at a glance 1998 - 2008
Google at a glance 1998 - 2008
 
Why Ben Stein Is Wrong About History & Science
Why Ben Stein Is Wrong About History & ScienceWhy Ben Stein Is Wrong About History & Science
Why Ben Stein Is Wrong About History & Science
 

Semelhante a Algorithms - Aaron Bloomfield

DS - Unit 2 FINAL (2).pptx
DS - Unit 2 FINAL (2).pptxDS - Unit 2 FINAL (2).pptx
DS - Unit 2 FINAL (2).pptx
prakashvs7
 

Semelhante a Algorithms - Aaron Bloomfield (20)

21-algorithms.ppt
21-algorithms.ppt21-algorithms.ppt
21-algorithms.ppt
 
21-algorithms.ppt
21-algorithms.ppt21-algorithms.ppt
21-algorithms.ppt
 
Algorithm, Pseudocode and Flowcharting in C++
Algorithm, Pseudocode and Flowcharting in C++Algorithm, Pseudocode and Flowcharting in C++
Algorithm, Pseudocode and Flowcharting in C++
 
21-algorithms (1).ppt
21-algorithms (1).ppt21-algorithms (1).ppt
21-algorithms (1).ppt
 
Lect-2.pptx
Lect-2.pptxLect-2.pptx
Lect-2.pptx
 
Data Structures_ Sorting & Searching
Data Structures_ Sorting & SearchingData Structures_ Sorting & Searching
Data Structures_ Sorting & Searching
 
DS - Unit 2 FINAL (2).pptx
DS - Unit 2 FINAL (2).pptxDS - Unit 2 FINAL (2).pptx
DS - Unit 2 FINAL (2).pptx
 
Unit 6 dsa SEARCHING AND SORTING
Unit 6 dsa SEARCHING AND SORTINGUnit 6 dsa SEARCHING AND SORTING
Unit 6 dsa SEARCHING AND SORTING
 
Algorithms
AlgorithmsAlgorithms
Algorithms
 
Binary Search - Design & Analysis of Algorithms
Binary Search - Design & Analysis of AlgorithmsBinary Search - Design & Analysis of Algorithms
Binary Search - Design & Analysis of Algorithms
 
Lecture_Oct26.pptx
Lecture_Oct26.pptxLecture_Oct26.pptx
Lecture_Oct26.pptx
 
my docoment
my docomentmy docoment
my docoment
 
Data Structures 6
Data Structures 6Data Structures 6
Data Structures 6
 
Chapter 11 - Sorting and Searching
Chapter 11 - Sorting and SearchingChapter 11 - Sorting and Searching
Chapter 11 - Sorting and Searching
 
L1803016468
L1803016468L1803016468
L1803016468
 
Data structures and algorithms
Data structures and algorithmsData structures and algorithms
Data structures and algorithms
 
data_structure_Chapter two_computer.pptx
data_structure_Chapter two_computer.pptxdata_structure_Chapter two_computer.pptx
data_structure_Chapter two_computer.pptx
 
Algorithms with-java-advanced-1.0
Algorithms with-java-advanced-1.0Algorithms with-java-advanced-1.0
Algorithms with-java-advanced-1.0
 
advanced searching and sorting.pdf
advanced searching and sorting.pdfadvanced searching and sorting.pdf
advanced searching and sorting.pdf
 
data structures and algorithms Unit 3
data structures and algorithms Unit 3data structures and algorithms Unit 3
data structures and algorithms Unit 3
 

Mais de Reggie Niccolo Santos

Mais de Reggie Niccolo Santos (15)

Securing PHP Applications
Securing PHP ApplicationsSecuring PHP Applications
Securing PHP Applications
 
Introduction to Web 2.0
Introduction to Web 2.0Introduction to Web 2.0
Introduction to Web 2.0
 
UI / UX Engineering for Web Applications
UI / UX Engineering for Web ApplicationsUI / UX Engineering for Web Applications
UI / UX Engineering for Web Applications
 
Computability - Tractable, Intractable and Non-computable Function
Computability - Tractable, Intractable and Non-computable FunctionComputability - Tractable, Intractable and Non-computable Function
Computability - Tractable, Intractable and Non-computable Function
 
Program Logic Formulation - Ohio State University
Program Logic Formulation - Ohio State UniversityProgram Logic Formulation - Ohio State University
Program Logic Formulation - Ohio State University
 
Abstract Data Types
Abstract Data TypesAbstract Data Types
Abstract Data Types
 
Computational Thinking and Data Representations
Computational Thinking and Data RepresentationsComputational Thinking and Data Representations
Computational Thinking and Data Representations
 
Number Systems
Number SystemsNumber Systems
Number Systems
 
Introduction to Game Development
Introduction to Game DevelopmentIntroduction to Game Development
Introduction to Game Development
 
Application Testing
Application TestingApplication Testing
Application Testing
 
Application Security
Application SecurityApplication Security
Application Security
 
PHP MVC
PHP MVCPHP MVC
PHP MVC
 
MySQL Transactions
MySQL TransactionsMySQL Transactions
MySQL Transactions
 
MySQL Cursors
MySQL CursorsMySQL Cursors
MySQL Cursors
 
MySQL Views
MySQL ViewsMySQL Views
MySQL Views
 

Último

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
masabamasaba
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
Abortion Pill Prices Boksburg [(+27832195400*)] 🏥 Women's Abortion Clinic in ...
Abortion Pill Prices Boksburg [(+27832195400*)] 🏥 Women's Abortion Clinic in ...Abortion Pill Prices Boksburg [(+27832195400*)] 🏥 Women's Abortion Clinic in ...
Abortion Pill Prices Boksburg [(+27832195400*)] 🏥 Women's Abortion Clinic in ...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 

Último (20)

WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
Abortion Pill Prices Boksburg [(+27832195400*)] 🏥 Women's Abortion Clinic in ...
Abortion Pill Prices Boksburg [(+27832195400*)] 🏥 Women's Abortion Clinic in ...Abortion Pill Prices Boksburg [(+27832195400*)] 🏥 Women's Abortion Clinic in ...
Abortion Pill Prices Boksburg [(+27832195400*)] 🏥 Women's Abortion Clinic in ...
 
WSO2Con2024 - Hello Choreo Presentation - Kanchana
WSO2Con2024 - Hello Choreo Presentation - KanchanaWSO2Con2024 - Hello Choreo Presentation - Kanchana
WSO2Con2024 - Hello Choreo Presentation - Kanchana
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 

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