1 / 23

Data Structures and Algorithms CSE 246

Data Structures and Algorithms CSE 246. Fall-2012 Lecture#15. Divide and Conquer. This is one of the most important ways in which algorithms have been developed. It suggests that a problem can sometimes be solved in three steps. Divide and Conquer.

tudor
Download Presentation

Data Structures and Algorithms CSE 246

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Data Structures and AlgorithmsCSE 246 Fall-2012 Lecture#15 Muhammad Usman Arif

  2. Divide and Conquer • This is one of the most important ways in which algorithms have been developed. • It suggests that a problem can sometimes be solved in three steps Muhammad Usman Arif

  3. Divide and Conquer 1. divide: If the particular instance of the problem that is presented is very small then solve it by brute force. Otherwise divide the problem into two (rarely more) parts, usually all of the sub-components being the same size. 2. conquer: Use recursion to solve the smaller problems. 3. combine: Create a solution to the final problem by using information from the solution of the smaller problems. Muhammad Usman Arif

  4. Merge Sort • This is a much more efficient sorting technique than those we have studied so far. • While the bubble, insertion, and selection sorts take O(N2) time. • the Mergesort takes O(N*logN). Muhammad Usman Arif

  5. The Merge SortAlgorithm • For example, if N (the number of items to be sorted) is 10,000 • Then N2is 100,000,000 • While N*logN is only 40,000. Muhammad UsmanArif

  6. Merge Sort • The mergesort is also fairly easy to implement. It’s conceptually easier. • The downside of the mergesort is that it requires an additional array in memory, • Equal in size to the one being sorted. If your original array barely fits in memory, the mergesortwon’t work. • If you have enough space, it’s a good choice. Muhammad Usman Arif

  7. Merging Two Sorted Arrays • The heart of the mergesort algorithm is the merging of two already-sorted arrays. • Merging two sorted arrays A and B creates a third array, C • C contains all the elements of A and B, also arranged in sorted order. • Lets examine the merging process first Muhammad Usman Arif

  8. Merging Two Sorted Arrays Muhammad Usman Arif

  9. Merging Two Sorted Arrays Muhammad Usman Arif

  10. Muhammad Usman Arif

  11. Sorting by Merging • The idea in the mergesort is to divide an array in half, sort each half, and then merge them. • How do you sort each half? • You divide the half into two quarters, sort each of the quarters, and merge them to make a sorted half Muhammad Usman Arif

  12. Sorting by Merging • You divide the array again and again until you reach a subarray with only one element. This is the base case; it’s assumed an array with one element is already sorted. • In mergeSort() the range is divided in half each time this method calls itself, and each time it returns it merges two smaller ranges into a larger one. Muhammad Usman Arif

  13. 19 Muhammad Usman Arif

  14. Extra Arrays • In the algorithm, a workspace array of the same size as the original array is created. • The subarraysare stored in sections of the workspace array. • This means that subarrays in the original array are copied to appropriate places in the workspace array. • After each merge, the workspace array is copied back into the original array. Muhammad Usman Arif

  15. Muhammad Usman Arif

  16. Muhammad Usman Arif

  17. Muhammad Usman Arif

  18. Efficiency of the mergesort • Mergesortruns in O(N*logN) time. • How? • We assume that copying and comparing are the most time-consuming operations. • The recursive calls and returns don’t add much overhead Muhammad Usman Arif

  19. Number of Copies • Each cell below the top line in Figure 2 represents an element copied from the array into the workspace. • Adding up all the cells in Figure 2(the seven numbered steps) shows there are 24 copies necessary to sort 8 items. • Log28 is 3, so 8*log28 equals 24. • This shows that, for the case of 8 items, the number of copies is proportional to N*log2N. Muhammad Usman Arif

  20. Number of Copies Another way to look at this calculation is that, to sort 8 items requires 3 levels, each of which involves 8 copies. A level means all copies into the same size subarray. In the first level, there are four 2-element subarrays; in the second level, there are two 4-element subarrays; and in the third level, there is one 8-element subarray. Each level has 8 elements, so again there are 3*8 or 24 copies. Muhammad Usman Arif

  21. Number of Comparisons • The number of comparisons is always somewhat less than the number of copies. • The maximum number of comparisons is always one less than the number of items being merged • The minimum is half the number of items being merged. Muhammad Usman Arif

  22. Muhammad Usman Arif

  23. Number of Comparisons • There are many merges for each sort, so we must add the comparisons for each one Muhammad Usman Arif

More Related