Upload
ahmed-cain
View
44
Download
3
Embed Size (px)
DESCRIPTION
Finding Min & Max. Given a collection Output Find the minimum. 7. 12. 5. 22. 3. 32. Find Min. Function find_min ( Arr Array, N Num ) m in_val Arr [0] For ( i = 1; i < N; i ++) If ( min_val > Arr [ i ]) Then min_val = Arr [ i ]; Endif Endfor End find_min ;. 7. - PowerPoint PPT Presentation
Citation preview
Finding Min & Max
• Given a collection
• Output– Find the minimum
7 12 5 22 3 32
Slide 1
Find Min
Function find_min (Arr Array, N Num)
min_val Arr[0]
For (i = 1; i < N; i++)
If ( min_val > Arr[i]) Then
min_val = Arr[i];
Endif
Endfor
End find_min;
7 12 5 22 3 32
7Slide 2
Find Min
Function find_min (Arr Array, N Num)
min_val Arr[0]
For (i = 1; i < N; i++)
If ( min_val > Arr[i]) Then
min_val = Arr[i];
Endif
Endfor
End find_min;
7 12 5 22 3 32
7Slide 3
Find Min
Function find_min (Arr Array, N Num)
min_val Arr[0]
For (i = 1; i < N; i++)
If ( min_val > Arr[i]) Then
min_val = Arr[i];
Endif
Endfor
End find_min;
7 12 5 22 3 32
7Slide 4
Find Min
Function find_min (Arr Array, N Num)
min_val Arr[0]
For (i = 1; i < N; i++)
If ( min_val > Arr[i]) Then
min_val = Arr[i];
Endif
Endfor
End find_min;
7 12 5 22 3 32
5Slide 5
Find Min
Function find_min (Arr Array, N Num)
min_val Arr[0]
For (i = 1; i < N; i++)
If ( min_val > Arr[i]) Then
min_val = Arr[i];
Endif
Endfor
End find_min;
7 12 5 22 3 32
5Slide 6
Find Min
Function find_min (Arr Array, N Num)
min_val Arr[0]
For (i = 1; i < N; i++)
If ( min_val > Arr[i]) Then
min_val = Arr[i];
Endif
Endfor
End find_min;
7 12 5 22 3 32
5Slide 7
Find Min
Function find_min (Arr Array, N Num)
min_val Arr[0]
For (i = 1; i < N; i++)
If ( min_val > Arr[i]) Then
min_val = Arr[i];
Endif
Endfor
End find_min;
7 12 5 22 3 32
3Slide 8
Find Min
Function find_min (Arr Array, N Num)
min_val Arr[0]
For (i = 1; i < N; i++)
If ( min_val > Arr[i]) Then
min_val = Arr[i];
Endif
Endfor
End find_min;
7 12 5 22 3 32
3Slide 9
Find Min: Algorithm Analysis
Function find_min (Arr Array, N Num)
min_val Arr[0]
For (i = 1; i < N; i++)
If ( min_val > Arr[i]) Then
min_val = Arr[i];
Endif
Endfor
End find_min;
Loop executes N-1 times(N-1 comparisons)
Slide 10
What About
• Find the maximum – Same as find minimum– Needs N-1 comparisons
• Find the minimum and maximum – Find the minimum N-1 comparisons– Find the maximum N-1 comparisons– Total 2(N-1) comparisons
Can we do better ??
Slide 11
Find Min & Max: Naïve Way
Function find_min (Arr Array, N Num)
min_val Arr[0]
max_val Arr[0]
For (i = 1; i < N; i++)
If ( min_val > Arr[i]) Then
min_val = Arr[i];
Endif
If ( max_val < Arr[i]) Then
max_val = Arr[i];
Endif
Endfor
End find_min;
Loop N-1 times
2 comparisons
Slide 12
Find Min & Max: Better Way
• Step 1: Compare pairs together – Move the smaller value to SmallList– Move the larger value to LargeList
7 12 5 22 3 32
7 5 3 12 22 32
SmallList LargeListSlide 13
Find Min & Max: Better Way
• Step 1: Compare pairs together – Move the smaller value to SmallList– Move the larger value to LargeList
7 12 5 22 3 32
7 5 3 12 22 32
SmallList LargeList
So farN/2 comparisons
Slide 14
Find Min & Max: Better Way
• Step 2: Get Min and Max – Get min from SmallList (using naïve way) (N/2 -1) comparisons – Get max from LargeList (using naïve way) (N/2 -1) comparisons– Total = 3 (N/2) - 2 comparisons
7 5 3 12 22 32
SmallList LargeList
Min = 3 Max = 32
Slide 15
Find Min & Max: Better Way
• Step 2: Get Min and Max – Get min from SmallList (using naïve way) (n/2 -1) comparisons – Get max from LargeList (using naïve way) (n/2 -1) comparisons– Total:~= 3 (N/2) comparisons
7 5 3 12 22 32
SmallList LargeList
Min = 3 Max = 32
Wait !!!!There is a hidden extra cost
What about Memory Usage?
Slide 16
Analysis of the Two Algorithms
• Naïve Way– (Time = CPU = Number of comparisons) 2(N-1)– (Memory = Storage) 2 extra spaces
• Other way– (Time = CPU = Number of comparisons) 3(N/2) -2– (Memory = Storage) N extra spaces
Slide 17
Ok…We can do better
• Make the SmallList and LargeList only one item• When you add to either lists compare with the
existing value and replace if needed
• Now Storage 2 extra spaces only
7 12 5 22 3 32
SmallList LargeListSlide 18
Ok…We can do better
• Make the SmallList and LargeList only one item• When you add to either lists compare with the
existing value and replace if needed
• Now Storage 2 extra spaces only
7 12 5 22 3 32
7 12
SmallList LargeListSlide 19
Ok…We can do better
• Make the SmallList and LargeList only one item• When you add to either lists compare with the
existing value and replace if needed
• Now Storage 2 extra spaces only
7 12 5 22 3 32
5 22
SmallList LargeListSlide 20
Ok…We can do better
• Make the SmallList and LargeList only one item• When you add to either lists compare with the
existing value and replace if needed
• Now Storage 2 extra spaces only
7 12 5 22 3 32
3 32
SmallList LargeListSlide 21
Analysis of the Two Algorithms
• Naïve Way– (Time = CPU = Number of comparisons) 2(N-1)– (Memory = Storage) 2 extra spaces
• Other way– (Time = CPU = Number of comparisons) 3(N/2)-2– (Memory = Storage) 2 extra spaces
Slide 22