Successfully reported this slideshow.
Upcoming SlideShare
×

# Algorithms Lecture 5: Sorting Algorithms II

1,587 views

Published on

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.

Published in: Education
• Full Name
Comment goes here.

Are you sure you want to Yes No
• thanks for your effort but i need the power point if it available

Are you sure you want to  Yes  No
• Benha University http://bu.edu.eg/staff/mloey

Are you sure you want to  Yes  No

### Algorithms Lecture 5: Sorting Algorithms II

1. 1. Analysis and Design of Algorithms Sorting Algorithms II
2. 2. Analysis and Design of Algorithms Counting Sort Radix Sort Merge Sort
3. 3. Analysis and Design of Algorithms Counting Sort
4. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 65. Analysis and Design of Algorithms  Array is now sorted 1 2 2 3 3 4 5
66. 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. 67. Analysis and Design of Algorithms  Python Code
68. 68. Analysis and Design of Algorithms
69. 69. Analysis and Design of Algorithms
70. 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. 71. Analysis and Design of Algorithms Radix Sort
72. 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. 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. 74. Analysis and Design of Algorithms  Assume the following Array: 170 45 75 90 802 24 2 66
75. 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. 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. 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. 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. 79. Analysis and Design of Algorithms  Array is now sorted 2 24 45 66 75 90 170 802
80. 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. 81. Analysis and Design of Algorithms
82. 82. Analysis and Design of Algorithms  Python Code
83. 83. Analysis and Design of Algorithms  Python Code
84. 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. 85. Analysis and Design of Algorithms Merge Sort
86. 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. 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. 88. Analysis and Design of Algorithms  Assume the following Array: 85 24 63 45 17 31 96 50
89. 89. Analysis and Design of Algorithms  Divide 85 24 63 45 17 31 96 50 85 24 63 45 17 31 96 50
90. 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. 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. 92. Analysis and Design of Algorithms  Sort & Merge 85 24 63 45 17 31 96 50
93. 93. Analysis and Design of Algorithms  Sort & Merge 85 24 63 45 17 31 96 50
94. 94. Analysis and Design of Algorithms  Sort & Merge 24 85 85 24 63 45 17 31 96 50
95. 95. Analysis and Design of Algorithms  Sort & Merge 24 85 85 24 63 45 17 31 96 50
96. 96. Analysis and Design of Algorithms  Sort & Merge 24 85 45 63 85 24 63 45 17 31 96 50
97. 97. Analysis and Design of Algorithms  Sort & Merge 24 85 45 63 85 24 63 45 17 31 96 50
98. 98. Analysis and Design of Algorithms  Sort & Merge 24 85 45 63 17 31 85 24 63 45 17 31 96 50
99. 99. Analysis and Design of Algorithms  Sort & Merge 24 85 45 63 17 31 85 24 63 45 17 31 96 50
100. 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. 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. 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. 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. 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. 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. 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. 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. 108. Analysis and Design of Algorithms  Array is now sorted 17 24 31 45 50 63 85 96
109. 109. Analysis and Design of Algorithms  Example 2
110. 110. Analysis and Design of Algorithms
111. 111. Analysis and Design of Algorithms
112. 112. Analysis and Design of Algorithms
113. 113. Analysis and Design of Algorithms Time Complexity: O(n * log(n) )