Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Algorithms Lecture 5: Sorting Algorithms II

Mohamed Loey
October 30, 2017

Algorithms Lecture 5: Sorting Algorithms II

Benha University

http://www.bu.edu.eg

We will discuss the following: Sorting Algorithms, Counting Sort, Radix Sort, Merge Sort.Algorithms, Time Complexity & Space Complexity, Algorithm vs Pseudocode, Some Algorithm Types, Programming Languages, Python, Anaconda.

Mohamed Loey

October 30, 2017
Tweet

More Decks by Mohamed Loey

Other Decks in Education

Transcript

  1. 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.
  2. 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
  3. Analysis and Design of Algorithms  Example 1 Assume the

    following Array in range of 0 to 5: 1 4 3 2 3 5 2
  4. Analysis and Design of Algorithms  Create a count array

    to store the count of each unique object: 1 4 3 2 3 5 2
  5. 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
  6. 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
  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 0 1 2 3 4 5 0 0 0 0 0 0
  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 1 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 1 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 1 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 1 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 1 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 1 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 1 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 1 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 1 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 1 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 1 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 1 2 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 2 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 2 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 1
  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 1
  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 1
  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 2 2 1 1
  27. 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
  28. 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
  29. 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
  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 3 5 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 3 5 6 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 5 6 7
  33. 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
  34. 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
  35. 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
  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 1 2 3 4 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 1
  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 0 3 5 6 7 1 2 3 4 5 6 7 1
  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 0 3 5 6 7 1 2 3 4 5 6 7 1
  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 0 3 5 5 7 1 2 3 4 5 6 7 1 4
  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 5 7 1 2 3 4 5 6 7 1 4
  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 5 7 1 2 3 4 5 6 7 1 4
  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 3 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 4 5 7 1 2 3 4 5 6 7 1 3 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 4 5 7 1 2 3 4 5 6 7 1 3 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 4 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 2 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 2 4 5 7 1 2 3 4 5 6 7 1 2 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 2 4 5 7 1 2 3 4 5 6 7 1 2 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 2 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 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 3 5 7 1 2 3 4 5 6 7 1 2 3 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 3 5 7 1 2 3 4 5 6 7 1 2 3 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 3 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 5
  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 6 1 2 3 4 5 6 7 1 2 3 3 4 5
  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 6 1 2 3 4 5 6 7 1 2 3 3 4 5
  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 6 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 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 1 3 5 6 1 2 3 4 5 6 7 1 2 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 1 3 5 6 1 2 3 4 5 6 7 1 2 2 3 3 4 5
  62. 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 5 Reduce 0 1 2 3 4 2 4 1 2 3 4 5 Output 0 2 2 4 4 Reduce 0 1 2 3 4 1 2 4 1 2 3 4 5 Output 0 1 2 4 4 Reduce 0 1 2 3 4 1 1 2 4 1 2 3 4 5 Output 0 0 2 4 4 Reduce 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
  63. 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
  64. 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.
  65. 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
  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
  67. 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
  68. 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
  69. 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
  70. 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
  71. 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.
  72. 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.
  73. 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
  74. Analysis and Design of Algorithms  Divide 85 24 63

    45 17 31 96 50 85 24 63 45 17 31 96 50
  75. 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
  76. 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
  77. Analysis and Design of Algorithms  Sort & Merge 24

    85 45 63 17 31 85 24 63 45 17 31 96 50
  78. Analysis and Design of Algorithms  Sort & Merge 24

    85 45 63 17 31 85 24 63 45 17 31 96 50
  79. Analysis and Design of Algorithms  Sort & Merge 24

    85 45 63 17 31 50 96 85 24 63 45 17 31 96 50
  80. Analysis and Design of Algorithms  Sort & Merge 24

    85 45 63 17 31 50 96 85 24 63 45 17 31 96 50
  81. Analysis and Design of Algorithms  Sort & Merge 24

    24 85 45 63 17 31 50 96 85 24 63 45 17 31 96 50
  82. 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
  83. 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
  84. 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
  85. 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
  86. 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
  87. Analysis and Design of Algorithms www.YourCompany.com © 2020 Companyname PowerPoint

    Business Theme. All Rights Reserved. THANKS FOR YOUR TIME