abstract in place merge
play

Abstract in-place merge Goal. Given two sorted subarrays a[lo] to - PowerPoint PPT Presentation

BBM 202 - ALGORITHMS D EPT . OF C OMPUTER E NGINEERING M ERGESORT Acknowledgement: The course slides are adapted from the slides prepared by R. Sedgewick and K. Wayne of Princeton University. Mergesort Basic plan. Divide array into


  1. 
 BBM 202 - ALGORITHMS D EPT . OF C OMPUTER E NGINEERING M ERGESORT Acknowledgement: The course slides are adapted from the slides prepared by 
 R. Sedgewick and K. Wayne of Princeton University.

  2. Mergesort Basic plan. • Divide array into two halves. • Recursively sort each half. • Merge two halves. input M E R G E S O R T E X A M P L E sort left half E E G M O R R S T E X A M P L E sort right half E E G M O R R S A E E L M P T X merge results A E E E E G L M M O P R R S T X Mergesort overview 2

  3. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . lo mid mid+1 hi E E G M R A C E R T a[] sorted sorted � 3

  4. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . lo mid mid+1 hi E E E E G G M M R R A A C C E E R R T T a[] copy to auxiliary array aux[] � 4

  5. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . E E G M R A C E R T a[] E E G M R A C E R T aux[] � 5

  6. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . E E G M R A C E R T a[] k compare minimum in each subarray E E G M R A A C E R T aux[] i j � 6

  7. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A E E G M R A C E R T a[] k compare minimum in each subarray E E G M R A C E R T aux[] i j � 7

  8. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A E G M R A C E R T a[] k compare minimum in each subarray E E G M R A C C E R T aux[] i j � 8

  9. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C E G M R A C E R T a[] k compare minimum in each subarray E E G M R A C E R T aux[] i j � 9

  10. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C G M R A C E R T a[] k compare minimum in each subarray E E E G M R A C E R T aux[] i j � 10

  11. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C G E M R A C E R T a[] k compare minimum in each subarray E E G M R A C E R T aux[] i j � 11

  12. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C E M R A C E R T a[] k compare minimum in each subarray E E E G M R A C E R T aux[] i j � 12

  13. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C E M E R A C E R T a[] k compare minimum in each subarray E E G M R A C E R T aux[] i j � 13

  14. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C E E R A C E R T a[] k compare minimum in each subarray E E G M R A C E E R T aux[] i j � 14

  15. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C E E R E A C E R T a[] k compare minimum in each subarray E E G M R A C E R T aux[] i j � 15

  16. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C E E E A C E R T a[] k compare minimum in each subarray E E G G M R A C E R T aux[] i j � 16

  17. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C E E E A G C E R T a[] k compare minimum in each subarray E E G M R A C E R T aux[] i j � 17

  18. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C E E E G C E R T a[] k compare minimum in each subarray E E G M M R A C E R T aux[] i j � 18

  19. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C E E E G M C E R T a[] k compare minimum in each subarray E E G M R A C E R T aux[] i j � 19

  20. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C E E E G M E R T a[] k compare minimum in each subarray E E G M R R A C E R T aux[] i j � 20

  21. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C E E E G M E R R T a[] k compare minimum in each subarray E E G M R A C E R T aux[] i j � 21

  22. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C E E E G M R R T a[] k one subarray exhausted, take from other E E G M R A C E R R T aux[] i j � 22

  23. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C E E E G M R R R T a[] k one subarray exhausted, take from other E E G M R A C E R T aux[] i j � 23

  24. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C E E E G M R R T a[] k one subarray exhausted, take from other E E G M R A C E R T T aux[] i j � 24

  25. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C E E E G M R R T T a[] k one subarray exhausted, take from other E E G M R A C E R T aux[] i j � 25

  26. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . A C E E E G M R R T a[] k both subarrays exhausted, done E E G M R A C E R T aux[] i j � 26

  27. Abstract in-place merge Goal. Given two sorted subarrays a[lo] to a[mid] and a[mid+1] to a[hi] , replace with sorted subarray a[lo] to a[hi] . lo hi A C E E E G M R R T a[] sorted � 27

  28. Merging Q. How to combine two sorted subarrays into a sorted whole. A. Use an auxiliary array. a[] aux[] k 0 1 2 3 4 5 6 7 8 9 i j 0 1 2 3 4 5 6 7 8 9 E E G M R A C E R T - - - - - - - - - - input E E G M R A C E R T E E G M R A C E R T copy 0 5 0 A 0 6 E E G M R A C E R T 1 A C 0 7 E E G M R C E R T 2 A C E 1 7 E E G M R E R T 3 A C E E 2 7 E G M R E R T 4 A C E E E 2 8 G M R E R T 5 A C E E E G 3 8 G M R R T 6 A C E E E G M 4 8 M R R T 7 A C E E E G M R 5 8 R R T 8 A C E E E G M R R 5 9 R T 9 A C E E E G M R R T 6 10 T A C E E E G M R R T merged result Abstract in-place merge trace 28

  29. Merging: Java implementation private static void merge(Comparable[] a, Comparable[] aux, int lo, int mid, int hi) 
 { assert isSorted(a, lo, mid); // precondition: a[lo..mid] sorted assert isSorted(a, mid+1, hi); // precondition: a[mid+1..hi] sorted for (int k = lo; k <= hi; k++) 
 copy aux[k] = a[k]; int i = lo, j = mid+1; 
 merge for (int k = lo; k <= hi; k++) 
 { if (i > mid) a[k] = aux[j++]; 
 else if (j > hi) a[k] = aux[i++]; 
 else if (less(aux[j], aux[i])) a[k] = aux[j++]; 
 else a[k] = aux[i++]; } assert isSorted(a, lo, hi); // postcondition: a[lo..hi] sorted 
 } lo i mid hi j aux[] A G L O R H I M S T k a[] A G H I L M 29

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend