SlideShare a Scribd company logo
Analysis and Design of Algorithms
Sorting Algorithms II
Analysis and Design of Algorithms
Counting Sort
Radix Sort
Merge Sort
Analysis and Design of Algorithms
Counting Sort
Analysis and Design of Algorithms
Counting sort is a sorting technique based on keys
between a specific range. It works by counting the
number of objects having distinct key values (kind of
hashing). Then doing some arithmetic to calculate
the position of each object in the output sequence.
Analysis and Design of Algorithms
Algorithm:
 Step1: Create a count array to store the count of each unique
object
 Step2 : Modify count array by adding the previous number.
 Step3 : Create output array by decrease count array
Analysis and Design of Algorithms
 Example 1 Assume the following Array in range of 0 to 5:
1 4 3 2 3 5 2
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 0 0 0 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 0 0 0 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 0 0 0 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 0 0 0 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 0 0 0 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 0 0 0 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 0 0 0 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 0 0 1 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 0 0 1 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 0 0 1 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 0 1 1 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 0 1 1 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 0 1 1 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 1 1 1 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 1 1 1 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 1 2 1 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 1 2 1 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 1 2 1 0
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 1 2 1 1
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 1 2 1 1
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 1 2 1 1
Analysis and Design of Algorithms
 Create a count array to store the count of each unique object:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 2 2 1 1
Analysis and Design of Algorithms
 Modify count array by adding the previous number :
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 2 2 1 1
Analysis and Design of Algorithms
 Modify count array by adding the previous number :
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 2 2 1 1
Analysis and Design of Algorithms
 Modify count array by adding the previous number :
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 3 2 1 1
Analysis and Design of Algorithms
 Modify count array by adding the previous number :
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 3 5 1 1
Analysis and Design of Algorithms
 Modify count array by adding the previous number :
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 3 5 6 1
Analysis and Design of Algorithms
 Modify count array by adding the previous number :
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 3 5 6 7
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 3 5 6 7
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 3 5 6 7
1 2 3 4 5 6 7
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 3 5 6 7
1 2 3 4 5 6 7
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 3 5 6 7
1 2 3 4 5 6 7
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 1 3 5 6 7
1 2 3 4 5 6 7
1
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 3 5 6 7
1 2 3 4 5 6 7
1
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 3 5 6 7
1 2 3 4 5 6 7
1
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 3 5 5 7
1 2 3 4 5 6 7
1 4
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 3 5 5 7
1 2 3 4 5 6 7
1 4
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 3 5 5 7
1 2 3 4 5 6 7
1 4
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 3 5 5 7
1 2 3 4 5 6 7
1 3 4
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 3 4 5 7
1 2 3 4 5 6 7
1 3 4
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 3 4 5 7
1 2 3 4 5 6 7
1 3 4
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 3 4 5 7
1 2 3 4 5 6 7
1 3 4
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 3 4 5 7
1 2 3 4 5 6 7
1 2 3 4
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 2 4 5 7
1 2 3 4 5 6 7
1 2 3 4
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 2 4 5 7
1 2 3 4 5 6 7
1 2 3 4
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 2 4 5 7
1 2 3 4 5 6 7
1 2 3 4
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 2 4 5 7
1 2 3 4 5 6 7
1 2 3 3 4
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 2 3 5 7
1 2 3 4 5 6 7
1 2 3 3 4
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 2 3 5 7
1 2 3 4 5 6 7
1 2 3 3 4
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 2 3 5 7
1 2 3 4 5 6 7
1 2 3 3 4
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 2 3 5 7
1 2 3 4 5 6 7
1 2 3 3 4 5
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 2 3 5 6
1 2 3 4 5 6 7
1 2 3 3 4 5
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 2 3 5 6
1 2 3 4 5 6 7
1 2 3 3 4 5
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 2 3 5 6
1 2 3 4 5 6 7
1 2 3 3 4 5
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 2 3 5 6
1 2 3 4 5 6 7
1 2 2 3 3 4 5
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 1 3 5 6
1 2 3 4 5 6 7
1 2 2 3 3 4 5
Analysis and Design of Algorithms
 Output each object from the input sequence followed by
decreasing its count by 1:
1 4 3 2 3 5 2
0 1 2 3 4 5
0 0 1 3 5 6
1 2 3 4 5 6 7
1 2 2 3 3 4 5
Analysis and Design of Algorithms
 Array is now sorted
1 2 2 3 3 4 5
Analysis and Design of Algorithms
2 4 1 1 3
 Example 2:
0 1 2 3 4
0 2 1 1 1
0 2 3 4 5
2
Count
Range=[0-4]
Add
1 2 3 4 5
Output
0 1 2 3 4
0 2 2 4 5Reduce
0 1 2 3 4
2 4
1 2 3 4 5
Output
0 2 2 4 4Reduce
0 1 2 3 4
1 2 4
1 2 3 4 5
Output
0 1 2 4 4Reduce
0 1 2 3 4
1 1 2 4
1 2 3 4 5
Output
0 0 2 4 4Reduce
0 1 2 3 4
1 1 2 3 4
1 2 3 4 5
Output
1 1 2 3 4
1 2 3 4 5
Sorted
Analysis and Design of Algorithms
 Python
Code
Analysis and Design of Algorithms
Analysis and Design of Algorithms
Analysis and Design of Algorithms
 Time Complexity: O(n+k) where n is the number of elements in input
array, and k is the range of input.
 Example of worst case
 Range between 1 to 10K
10 5 10k 5k 200
Analysis and Design of Algorithms
Radix Sort
Analysis and Design of Algorithms
 Radix sort is an algorithm that sorts numbers by processing digits
of each number either starting from the least significant digit (LSD)
or starting from the most significant digit (MSD).
 The idea of Radix Sort is to do digit by digit sort starting from
least significant digit to most significant digit. Radix sort uses
counting sort as a subroutine to sort.
Analysis and Design of Algorithms
Algorithm:
 Step1: Take the least significant digit of each element
 Step2 : Sort the list of elements based on that digit
 Step3 : Repeat the sort with each more significant digit
Analysis and Design of Algorithms
 Assume the following Array:
170 45 75 90 802 24 2 66
Analysis and Design of Algorithms
 The Sorted list will appear after three steps
170 45 75 90 802 24 2 66
170 90 802 2 24 45 75 66
802 2 24 45 66 170 75 90
2 24 45 66 75 90 170 802
Analysis and Design of Algorithms
 Step1: Sorting by least significant digit (1s place)
170 45 75 90 802 24 2 66
170 90 802 2 24 45 75 66
Analysis and Design of Algorithms
 Step2: Sorting by next digit (10s place)
170 90 802 2 24 45 75 66
802 2 24 45 66 170 75 90
Analysis and Design of Algorithms
 Step3: Sorting by most significant digit (100s place)
802 2 24 45 66 170 75 90
2 24 45 66 75 90 170 802
Analysis and Design of Algorithms
 Array is now sorted
2 24 45 66 75 90 170 802
Analysis and Design of Algorithms
 Example 2
1 2 3
5 8 3
1 5 4
5 6 7
6 8 9
6 2 5
4 5 6
1 2 3
5 8 3
1 5 4
6 2 5
4 5 6
5 6 7
6 8 9
1 2 3
6 2 5
1 5 4
4 5 6
5 6 7
5 8 3
6 8 9
1 2 3
1 5 4
4 5 6
5 6 7
5 8 3
6 2 5
6 8 9
1s 10s 100s
Analysis and Design of Algorithms
Analysis and Design of Algorithms
 Python Code
Analysis and Design of Algorithms
 Python Code
Analysis and Design of Algorithms
Time Complexity: O(n+k/d) where n is the number
of elements in input array, k is the range of input,
and d is number of digits.
Analysis and Design of Algorithms
Merge Sort
Analysis and Design of Algorithms
 Merge Sort is a Divide and Conquer algorithm. It
divides input array in two halves, calls itself for the
two halves and then merges the two sorted halves.
Analysis and Design of Algorithms
Algorithm:
 Step1: Divide the list recursively into two halves until it can
no more be divided
 Step2 : Merge (Conquer) the smaller lists into new list in
sorted order
Analysis and Design of Algorithms
 Assume the following Array:
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Divide
85 24 63 45 17 31 96 50
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Divide
85 24 63 45 17 31 96 50
85 24 63 45 17 31 96 50
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Divide
85 24 63 45 17 31 96 50
85 24 63 45 17 31 96 50
85 24 63 45 17 31 96 50
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Sort & Merge
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Sort & Merge
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Sort & Merge
24 85
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Sort & Merge
24 85
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Sort & Merge
24 85 45 63
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Sort & Merge
24 85 45 63
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Sort & Merge
24 85 45 63 17 31
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Sort & Merge
24 85 45 63 17 31
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Sort & Merge
24 85 45 63 17 31 50 96
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Sort & Merge
24 85 45 63 17 31 50 96
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Sort & Merge
24
24 85 45 63 17 31 50 96
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Sort & Merge
24 45
24 85 45 63 17 31 50 96
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Sort & Merge
24 45 63
24 85 45 63 17 31 50 96
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Sort & Merge
24 45 63 85
24 85 45 63 17 31 50 96
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Sort & Merge
24 45 63 85 17 31 50 96
24 85 45 63 17 31 50 96
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Sort & Merge
17 24 31 45 50 63 85 96
24 45 63 85 17 31 50 96
24 85 45 63 17 31 50 96
85 24 63 45 17 31 96 50
Analysis and Design of Algorithms
 Array is now sorted
17 24 31 45 50 63 85 96
Analysis and Design of Algorithms
 Example 2
Analysis and Design of Algorithms
Analysis and Design of Algorithms
Analysis and Design of Algorithms
Analysis and Design of Algorithms
Time Complexity: O(n * log(n) )
Analysis and Design of Algorithms
facebook.com/mloey
mohamedloey@gmail.com
twitter.com/mloey
linkedin.com/in/mloey
mloey@fci.bu.edu.eg
mloey.github.io
Analysis and Design of Algorithms
www.YourCompany.com
© 2020 Companyname PowerPoint Business Theme. All Rights Reserved.
THANKS FOR
YOUR TIME

More Related Content

PDF
Algorithms Lecture 4: Sorting Algorithms I
PDF
Algorithms Lecture 2: Analysis of Algorithms I
PDF
Algorithms Lecture 6: Searching Algorithms
PDF
Algorithms Lecture 1: Introduction to Algorithms
PDF
Algorithms Lecture 3: Analysis of Algorithms II
PPT
Bai giang thuat toan tim kiem va sap xep
PPTX
Programme evaluation and review technique &Gantt Chart
PPT
Introduction to photoshop
Algorithms Lecture 4: Sorting Algorithms I
Algorithms Lecture 2: Analysis of Algorithms I
Algorithms Lecture 6: Searching Algorithms
Algorithms Lecture 1: Introduction to Algorithms
Algorithms Lecture 3: Analysis of Algorithms II
Bai giang thuat toan tim kiem va sap xep
Programme evaluation and review technique &Gantt Chart
Introduction to photoshop

What's hot (20)

PDF
Algorithms Lecture 8: Pattern Algorithms
PDF
Algorithms Lecture 7: Graph Algorithms
PDF
Binary Search - Design & Analysis of Algorithms
PPTX
Lexical analysis - Compiler Design
PPT
Algorithm: Quick-Sort
PPTX
Top down parsing
PPTX
Hashing Technique In Data Structures
PPTX
Binary search
PDF
I.BEST FIRST SEARCH IN AI
PDF
Array data structure
PPT
Selection sort
PPTX
Compiler design syntax analysis
PPTX
linked list
PPT
Parsing
PPTX
Quick Sort
PDF
Operator precedence
PPTX
Analysis of algorithm
PPTX
Selection sort
PPT
Priority queues
PPTX
Presentation on the topic selection sort
Algorithms Lecture 8: Pattern Algorithms
Algorithms Lecture 7: Graph Algorithms
Binary Search - Design & Analysis of Algorithms
Lexical analysis - Compiler Design
Algorithm: Quick-Sort
Top down parsing
Hashing Technique In Data Structures
Binary search
I.BEST FIRST SEARCH IN AI
Array data structure
Selection sort
Compiler design syntax analysis
linked list
Parsing
Quick Sort
Operator precedence
Analysis of algorithm
Selection sort
Priority queues
Presentation on the topic selection sort
Ad

Viewers also liked (6)

PDF
Deep Learning - Overview of my work II
PDF
Convolutional Neural Network Models - Deep Learning
PDF
Computer Security Lecture 7: RSA
PDF
PMP Lecture 1: Introduction to Project Management
PDF
Computer Security Lecture 5: Simplified Advanced Encryption Standard
PPSX
C++ Programming Language
Deep Learning - Overview of my work II
Convolutional Neural Network Models - Deep Learning
Computer Security Lecture 7: RSA
PMP Lecture 1: Introduction to Project Management
Computer Security Lecture 5: Simplified Advanced Encryption Standard
C++ Programming Language
Ad

Similar to Algorithms Lecture 5: Sorting Algorithms II (20)

PDF
Basics in algorithms and data structure
PPTX
UNEC__1683196273.pptx
PPTX
Apriori algorithm
PPTX
Feature Selection for Document Ranking
PDF
Lecture6[1]
PPTX
2.4 Lecture.pptx
PPT
Cis435 week06
PPTX
Splunk Enterprise for Information Security (Hands-On)
PPTX
How Computer Games Help Children Learn (Stockholm University Dept of Educatio...
PPT
Encoder decoder
PPTX
Kishan Kaushik - Red Black Tree Overview
PPTX
Kishan Kaushik - Red Black Tree PPT.pptx
PPT
PPTX
Optimizing Set-Similarity Join and Search with Different Prefix Schemes
PDF
Binary Search Tree (BST) Explained Step-by-Step
PPTX
Data Mining Lecture_4.pptx
PPTX
Lecture 10-cs648=2013 Randomized Algorithms
PPT
Data Structure (MC501)
PDF
Android application - Tic Tac Toe
Basics in algorithms and data structure
UNEC__1683196273.pptx
Apriori algorithm
Feature Selection for Document Ranking
Lecture6[1]
2.4 Lecture.pptx
Cis435 week06
Splunk Enterprise for Information Security (Hands-On)
How Computer Games Help Children Learn (Stockholm University Dept of Educatio...
Encoder decoder
Kishan Kaushik - Red Black Tree Overview
Kishan Kaushik - Red Black Tree PPT.pptx
Optimizing Set-Similarity Join and Search with Different Prefix Schemes
Binary Search Tree (BST) Explained Step-by-Step
Data Mining Lecture_4.pptx
Lecture 10-cs648=2013 Randomized Algorithms
Data Structure (MC501)
Android application - Tic Tac Toe

More from Mohamed Loey (18)

PDF
Lecture 6: Deep Learning Applications
PDF
Lecture 5: Convolutional Neural Network Models
PDF
Lecture 4: Deep Learning Frameworks
PDF
Lecture 4: How it Works: Convolutional Neural Networks
PPTX
Lecture 3: Convolutional Neural Networks
PDF
Lecture 2: Artificial Neural Network
PDF
Lecture 1: Deep Learning for Computer Vision
PDF
Design of an Intelligent System for Improving Classification of Cancer Diseases
PDF
Computer Security - CCNA Security - Lecture 2
PDF
Computer Security - CCNA Security - Lecture 1
PDF
Computer Security Lecture 4.1: DES Supplementary Material
PDF
PMP Lecture 4: Project Integration Management
PDF
Computer Security Lecture 4: Block Ciphers and the Data Encryption Standard
PDF
Computer Security Lecture 3: Classical Encryption Techniques 2
PDF
Computer Security Lecture 2: Classical Encryption Techniques 1
PDF
Computer Security Lecture 1: Overview
PDF
PMP Lecture 3: Project Management Processes
PDF
PMP Lecture 2: Project Management Framework
Lecture 6: Deep Learning Applications
Lecture 5: Convolutional Neural Network Models
Lecture 4: Deep Learning Frameworks
Lecture 4: How it Works: Convolutional Neural Networks
Lecture 3: Convolutional Neural Networks
Lecture 2: Artificial Neural Network
Lecture 1: Deep Learning for Computer Vision
Design of an Intelligent System for Improving Classification of Cancer Diseases
Computer Security - CCNA Security - Lecture 2
Computer Security - CCNA Security - Lecture 1
Computer Security Lecture 4.1: DES Supplementary Material
PMP Lecture 4: Project Integration Management
Computer Security Lecture 4: Block Ciphers and the Data Encryption Standard
Computer Security Lecture 3: Classical Encryption Techniques 2
Computer Security Lecture 2: Classical Encryption Techniques 1
Computer Security Lecture 1: Overview
PMP Lecture 3: Project Management Processes
PMP Lecture 2: Project Management Framework

Recently uploaded (20)

PPTX
Pharma ospi slides which help in ospi learning
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PPTX
BOWEL ELIMINATION FACTORS AFFECTING AND TYPES
PDF
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PDF
Classroom Observation Tools for Teachers
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PDF
Microbial disease of the cardiovascular and lymphatic systems
PPTX
PPH.pptx obstetrics and gynecology in nursing
PDF
01-Introduction-to-Information-Management.pdf
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PDF
Basic Mud Logging Guide for educational purpose
PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PPTX
The Healthy Child – Unit II | Child Health Nursing I | B.Sc Nursing 5th Semester
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PDF
Insiders guide to clinical Medicine.pdf
PPTX
Cell Types and Its function , kingdom of life
PPTX
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
Pharma ospi slides which help in ospi learning
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
BOWEL ELIMINATION FACTORS AFFECTING AND TYPES
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
STATICS OF THE RIGID BODIES Hibbelers.pdf
Abdominal Access Techniques with Prof. Dr. R K Mishra
Classroom Observation Tools for Teachers
Supply Chain Operations Speaking Notes -ICLT Program
Microbial disease of the cardiovascular and lymphatic systems
PPH.pptx obstetrics and gynecology in nursing
01-Introduction-to-Information-Management.pdf
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
Basic Mud Logging Guide for educational purpose
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
The Healthy Child – Unit II | Child Health Nursing I | B.Sc Nursing 5th Semester
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
Insiders guide to clinical Medicine.pdf
Cell Types and Its function , kingdom of life
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...

Algorithms Lecture 5: Sorting Algorithms II

  • 1. Analysis and Design of Algorithms Sorting Algorithms II
  • 2. Analysis and Design of Algorithms Counting Sort Radix Sort Merge Sort
  • 3. Analysis and Design of Algorithms Counting Sort
  • 4. Analysis and Design of Algorithms Counting sort is a sorting technique based on keys between a specific range. It works by counting the number of objects having distinct key values (kind of hashing). Then doing some arithmetic to calculate the position of each object in the output sequence.
  • 5. Analysis and Design of Algorithms Algorithm:  Step1: Create a count array to store the count of each unique object  Step2 : Modify count array by adding the previous number.  Step3 : Create output array by decrease count array
  • 6. Analysis and Design of Algorithms  Example 1 Assume the following Array in range of 0 to 5: 1 4 3 2 3 5 2
  • 7. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2
  • 8. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 0 0 0 0
  • 9. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 0 0 0 0
  • 10. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 0 0 0 0
  • 11. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 0 0 0 0
  • 12. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 0 0 0 0
  • 13. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 0 0 0 0
  • 14. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 0 0 0 0
  • 15. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 0 0 1 0
  • 16. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 0 0 1 0
  • 17. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 0 0 1 0
  • 18. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 0 1 1 0
  • 19. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 0 1 1 0
  • 20. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 0 1 1 0
  • 21. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 1 1 1 0
  • 22. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 1 1 1 0
  • 23. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 1 2 1 0
  • 24. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 1 2 1 0
  • 25. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 1 2 1 0
  • 26. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 1 2 1 1
  • 27. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 1 2 1 1
  • 28. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 1 2 1 1
  • 29. Analysis and Design of Algorithms  Create a count array to store the count of each unique object: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 2 2 1 1
  • 30. Analysis and Design of Algorithms  Modify count array by adding the previous number : 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 2 2 1 1
  • 31. Analysis and Design of Algorithms  Modify count array by adding the previous number : 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 2 2 1 1
  • 32. Analysis and Design of Algorithms  Modify count array by adding the previous number : 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 3 2 1 1
  • 33. Analysis and Design of Algorithms  Modify count array by adding the previous number : 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 3 5 1 1
  • 34. Analysis and Design of Algorithms  Modify count array by adding the previous number : 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 3 5 6 1
  • 35. Analysis and Design of Algorithms  Modify count array by adding the previous number : 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 3 5 6 7
  • 36. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 3 5 6 7
  • 37. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 3 5 6 7 1 2 3 4 5 6 7
  • 38. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 3 5 6 7 1 2 3 4 5 6 7
  • 39. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 3 5 6 7 1 2 3 4 5 6 7
  • 40. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 1 3 5 6 7 1 2 3 4 5 6 7 1
  • 41. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 3 5 6 7 1 2 3 4 5 6 7 1
  • 42. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 3 5 6 7 1 2 3 4 5 6 7 1
  • 43. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 3 5 5 7 1 2 3 4 5 6 7 1 4
  • 44. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 3 5 5 7 1 2 3 4 5 6 7 1 4
  • 45. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 3 5 5 7 1 2 3 4 5 6 7 1 4
  • 46. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 3 5 5 7 1 2 3 4 5 6 7 1 3 4
  • 47. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 3 4 5 7 1 2 3 4 5 6 7 1 3 4
  • 48. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 3 4 5 7 1 2 3 4 5 6 7 1 3 4
  • 49. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 3 4 5 7 1 2 3 4 5 6 7 1 3 4
  • 50. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 3 4 5 7 1 2 3 4 5 6 7 1 2 3 4
  • 51. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 2 4 5 7 1 2 3 4 5 6 7 1 2 3 4
  • 52. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 2 4 5 7 1 2 3 4 5 6 7 1 2 3 4
  • 53. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 2 4 5 7 1 2 3 4 5 6 7 1 2 3 4
  • 54. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 2 4 5 7 1 2 3 4 5 6 7 1 2 3 3 4
  • 55. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 2 3 5 7 1 2 3 4 5 6 7 1 2 3 3 4
  • 56. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 2 3 5 7 1 2 3 4 5 6 7 1 2 3 3 4
  • 57. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 2 3 5 7 1 2 3 4 5 6 7 1 2 3 3 4
  • 58. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 2 3 5 7 1 2 3 4 5 6 7 1 2 3 3 4 5
  • 59. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 2 3 5 6 1 2 3 4 5 6 7 1 2 3 3 4 5
  • 60. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 2 3 5 6 1 2 3 4 5 6 7 1 2 3 3 4 5
  • 61. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 2 3 5 6 1 2 3 4 5 6 7 1 2 3 3 4 5
  • 62. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 2 3 5 6 1 2 3 4 5 6 7 1 2 2 3 3 4 5
  • 63. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 1 3 5 6 1 2 3 4 5 6 7 1 2 2 3 3 4 5
  • 64. Analysis and Design of Algorithms  Output each object from the input sequence followed by decreasing its count by 1: 1 4 3 2 3 5 2 0 1 2 3 4 5 0 0 1 3 5 6 1 2 3 4 5 6 7 1 2 2 3 3 4 5
  • 65. Analysis and Design of Algorithms  Array is now sorted 1 2 2 3 3 4 5
  • 66. Analysis and Design of Algorithms 2 4 1 1 3  Example 2: 0 1 2 3 4 0 2 1 1 1 0 2 3 4 5 2 Count Range=[0-4] Add 1 2 3 4 5 Output 0 1 2 3 4 0 2 2 4 5Reduce 0 1 2 3 4 2 4 1 2 3 4 5 Output 0 2 2 4 4Reduce 0 1 2 3 4 1 2 4 1 2 3 4 5 Output 0 1 2 4 4Reduce 0 1 2 3 4 1 1 2 4 1 2 3 4 5 Output 0 0 2 4 4Reduce 0 1 2 3 4 1 1 2 3 4 1 2 3 4 5 Output 1 1 2 3 4 1 2 3 4 5 Sorted
  • 67. Analysis and Design of Algorithms  Python Code
  • 68. Analysis and Design of Algorithms
  • 69. Analysis and Design of Algorithms
  • 70. Analysis and Design of Algorithms  Time Complexity: O(n+k) where n is the number of elements in input array, and k is the range of input.  Example of worst case  Range between 1 to 10K 10 5 10k 5k 200
  • 71. Analysis and Design of Algorithms Radix Sort
  • 72. Analysis and Design of Algorithms  Radix sort is an algorithm that sorts numbers by processing digits of each number either starting from the least significant digit (LSD) or starting from the most significant digit (MSD).  The idea of Radix Sort is to do digit by digit sort starting from least significant digit to most significant digit. Radix sort uses counting sort as a subroutine to sort.
  • 73. Analysis and Design of Algorithms Algorithm:  Step1: Take the least significant digit of each element  Step2 : Sort the list of elements based on that digit  Step3 : Repeat the sort with each more significant digit
  • 74. Analysis and Design of Algorithms  Assume the following Array: 170 45 75 90 802 24 2 66
  • 75. Analysis and Design of Algorithms  The Sorted list will appear after three steps 170 45 75 90 802 24 2 66 170 90 802 2 24 45 75 66 802 2 24 45 66 170 75 90 2 24 45 66 75 90 170 802
  • 76. Analysis and Design of Algorithms  Step1: Sorting by least significant digit (1s place) 170 45 75 90 802 24 2 66 170 90 802 2 24 45 75 66
  • 77. Analysis and Design of Algorithms  Step2: Sorting by next digit (10s place) 170 90 802 2 24 45 75 66 802 2 24 45 66 170 75 90
  • 78. Analysis and Design of Algorithms  Step3: Sorting by most significant digit (100s place) 802 2 24 45 66 170 75 90 2 24 45 66 75 90 170 802
  • 79. Analysis and Design of Algorithms  Array is now sorted 2 24 45 66 75 90 170 802
  • 80. Analysis and Design of Algorithms  Example 2 1 2 3 5 8 3 1 5 4 5 6 7 6 8 9 6 2 5 4 5 6 1 2 3 5 8 3 1 5 4 6 2 5 4 5 6 5 6 7 6 8 9 1 2 3 6 2 5 1 5 4 4 5 6 5 6 7 5 8 3 6 8 9 1 2 3 1 5 4 4 5 6 5 6 7 5 8 3 6 2 5 6 8 9 1s 10s 100s
  • 81. Analysis and Design of Algorithms
  • 82. Analysis and Design of Algorithms  Python Code
  • 83. Analysis and Design of Algorithms  Python Code
  • 84. Analysis and Design of Algorithms Time Complexity: O(n+k/d) where n is the number of elements in input array, k is the range of input, and d is number of digits.
  • 85. Analysis and Design of Algorithms Merge Sort
  • 86. Analysis and Design of Algorithms  Merge Sort is a Divide and Conquer algorithm. It divides input array in two halves, calls itself for the two halves and then merges the two sorted halves.
  • 87. Analysis and Design of Algorithms Algorithm:  Step1: Divide the list recursively into two halves until it can no more be divided  Step2 : Merge (Conquer) the smaller lists into new list in sorted order
  • 88. Analysis and Design of Algorithms  Assume the following Array: 85 24 63 45 17 31 96 50
  • 89. Analysis and Design of Algorithms  Divide 85 24 63 45 17 31 96 50 85 24 63 45 17 31 96 50
  • 90. Analysis and Design of Algorithms  Divide 85 24 63 45 17 31 96 50 85 24 63 45 17 31 96 50 85 24 63 45 17 31 96 50
  • 91. Analysis and Design of Algorithms  Divide 85 24 63 45 17 31 96 50 85 24 63 45 17 31 96 50 85 24 63 45 17 31 96 50 85 24 63 45 17 31 96 50
  • 92. Analysis and Design of Algorithms  Sort & Merge 85 24 63 45 17 31 96 50
  • 93. Analysis and Design of Algorithms  Sort & Merge 85 24 63 45 17 31 96 50
  • 94. Analysis and Design of Algorithms  Sort & Merge 24 85 85 24 63 45 17 31 96 50
  • 95. Analysis and Design of Algorithms  Sort & Merge 24 85 85 24 63 45 17 31 96 50
  • 96. Analysis and Design of Algorithms  Sort & Merge 24 85 45 63 85 24 63 45 17 31 96 50
  • 97. Analysis and Design of Algorithms  Sort & Merge 24 85 45 63 85 24 63 45 17 31 96 50
  • 98. Analysis and Design of Algorithms  Sort & Merge 24 85 45 63 17 31 85 24 63 45 17 31 96 50
  • 99. Analysis and Design of Algorithms  Sort & Merge 24 85 45 63 17 31 85 24 63 45 17 31 96 50
  • 100. Analysis and Design of Algorithms  Sort & Merge 24 85 45 63 17 31 50 96 85 24 63 45 17 31 96 50
  • 101. Analysis and Design of Algorithms  Sort & Merge 24 85 45 63 17 31 50 96 85 24 63 45 17 31 96 50
  • 102. Analysis and Design of Algorithms  Sort & Merge 24 24 85 45 63 17 31 50 96 85 24 63 45 17 31 96 50
  • 103. Analysis and Design of Algorithms  Sort & Merge 24 45 24 85 45 63 17 31 50 96 85 24 63 45 17 31 96 50
  • 104. Analysis and Design of Algorithms  Sort & Merge 24 45 63 24 85 45 63 17 31 50 96 85 24 63 45 17 31 96 50
  • 105. Analysis and Design of Algorithms  Sort & Merge 24 45 63 85 24 85 45 63 17 31 50 96 85 24 63 45 17 31 96 50
  • 106. Analysis and Design of Algorithms  Sort & Merge 24 45 63 85 17 31 50 96 24 85 45 63 17 31 50 96 85 24 63 45 17 31 96 50
  • 107. Analysis and Design of Algorithms  Sort & Merge 17 24 31 45 50 63 85 96 24 45 63 85 17 31 50 96 24 85 45 63 17 31 50 96 85 24 63 45 17 31 96 50
  • 108. Analysis and Design of Algorithms  Array is now sorted 17 24 31 45 50 63 85 96
  • 109. Analysis and Design of Algorithms  Example 2
  • 110. Analysis and Design of Algorithms
  • 111. Analysis and Design of Algorithms
  • 112. Analysis and Design of Algorithms
  • 113. Analysis and Design of Algorithms Time Complexity: O(n * log(n) )
  • 114. Analysis and Design of Algorithms facebook.com/mloey mohamedloey@gmail.com twitter.com/mloey linkedin.com/in/mloey mloey@fci.bu.edu.eg mloey.github.io
  • 115. Analysis and Design of Algorithms www.YourCompany.com © 2020 Companyname PowerPoint Business Theme. All Rights Reserved. THANKS FOR YOUR TIME