Top Banner
Finding Min & Max Given a collection Output Find the minimum 7 12 5 22 3 32 Slide 1
22

Finding Min & Max

Dec 30, 2015

Download

Documents

ahmed-cain

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
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Finding Min & Max

Finding Min & Max

• Given a collection

• Output– Find the minimum

7 12 5 22 3 32

Slide 1

Page 2: Finding Min & Max

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

Page 3: Finding Min & Max

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

Page 4: Finding Min & Max

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

Page 5: Finding Min & Max

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

Page 6: Finding Min & Max

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

Page 7: Finding Min & Max

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

Page 8: Finding Min & Max

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

Page 9: Finding Min & Max

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

Page 10: Finding Min & Max

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

Page 11: Finding Min & Max

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

Page 12: Finding Min & Max

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

Page 13: Finding Min & Max

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

Page 14: Finding Min & Max

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

Page 15: Finding Min & Max

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

Page 16: Finding Min & Max

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

Page 17: Finding Min & Max

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

Page 18: Finding Min & Max

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

Page 19: Finding Min & Max

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

Page 20: Finding Min & Max

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

Page 21: Finding Min & Max

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

Page 22: Finding Min & Max

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