0% found this document useful (0 votes)
157 views11 pages

Design and Analysis of Algorithm UNIT-II Divide and Conquer

The document discusses two divide and conquer algorithms: quicksort and merge sort. Quicksort partitions an array around a pivot value and recursively sorts the subarrays. Merge sort divides the array into single elements, recursively merges sorted subarrays back together. Binary search is also discussed as it uses divide and conquer to search a sorted array by recursively narrowing the search space.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
157 views11 pages

Design and Analysis of Algorithm UNIT-II Divide and Conquer

The document discusses two divide and conquer algorithms: quicksort and merge sort. Quicksort partitions an array around a pivot value and recursively sorts the subarrays. Merge sort divides the array into single elements, recursively merges sorted subarrays back together. Binary search is also discussed as it uses divide and conquer to search a sorted array by recursively narrowing the search space.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 11

Design and analysis of algorithm

UNIT-II Divide and Conquer


Quick Sort

divide a list into big values and small values, then sort each part

✦ QuickSort is another divide-and-conquer sorting algorithm


✦ The main idea is to partition the array into two regions:
❖ small items are moved to the left side of the array
❖ large items are moved to the right side
✦ After partitioning, repeat the sort on the left and right sides
❖ each region is a sub-problem, a smaller version of the original problem
✦ Main question: how do we decide which items are “small” and which are “large”?
✦ A common technique: use the first item in the region as a pivot
❖ everything less than the pivot ends up in the left region
items greater than or equal to the pivot go in the right region
Binary Search

✦ The binary search algorithm uses the divide-and-conquer strategy


to search through an array
✦ The array must be sorted
❖ the “zeroing in” strategy for looking up a
word in the dictionary won’t work it the
words are not in alphabetical order
❖ binary search will not work unless the
array is sorted
✦ divide and conquer
❖ break a problem into smaller pieces and solve the smaller
sub-problems
✦ It may not seem like that big a deal, but the improvement can be
dramatic
❖ approximate number of comparisons (worst case):

Breaking large problems into smaller subproblems

✦ Binary Search
✦ Binary Search Experiments
✦ Merge Sort
✦ Merge Sort Experiments
✦ Recursive Methods

Binary Search

✦ The binary search algorithm uses the divide-and-conquer strategy


to search through an array
✦ The array must be sorted
❖ the “zeroing in” strategy for looking up a
word in the dictionary won’t work it the
words are not in alphabetical order
❖ binary search will not work unless the
array is sorted

Merge Sort
❖ sort subgroups of size 2, merge them into sorted groups of
size 4, merge those into sorted groups of size 8, ...

❖ The merge sort algorithm works from “the bottom up”


❖ start by solving the smallest pieces of the main problem
❖ keep combining their results into larger solutions
❖ eventually the original problem will be solved

 Merge sort is a sorting technique based on divide and conquer


technique.
 With worst- case time complexity being Ο(n log n), it is one of the
most respected algorithms.
 Merge sort first divides the array into equal halves and then
combines them in a sorted manner.
 Invented by John von Neumann (1903-1957)
 Follows divide and conquer paradigm.
 Developed merge sort for EDVAC in 1945

Methods
Divide: Divide the unsorted list into two sub lists of about half the
size.
Conquer: Sort each of the two sub lists recursively until we have list
sizes of length 1,in which case the list itself is returned.
Combine: Merge the two-sorted sub lists back into one sorted list.

Algorithm
MERGE SORT (A,p,r) //divide
if p < r then q= [ (p + r) / 2 ]
MERGE SORT(A,p,q)
MERGER SORT(A,q + 1,r)
MERGE(A,p,q,r)
Merge(array A, int p, int q, int r)
{
array B[p..r] //temp array taken
i = k = p // initialize pointers
j = q+1
while (i <= q and j <= r)
{ if (A[i] <= A[j]) B[k++] = A[i++]
else
B[k++] = A[j++]
}
while (i <= q) B[k++] = A[i++] // copy any leftover to B
while (j <= r) B[k++] = A[j++]
for i = p to r A[i] = B[i] // copy B back to A
}

You might also like