Download - Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

Transcript
Page 1: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 19991

Merge and Quick SortLawrence M. Brown

Merge and Quick Sort†

• Merge Sort‡

• Merge Sort Tree• Implementation• Quick Sort‡

• Pivot Item• Randomized Quick Sort

†Adapted from: Goodrich and Tamassia, Data Structures and Algorithms in Java, John Wiley & Son (1998).‡Running time assumes no duplicate elements.

Page 2: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 19992

Merge and Quick SortLawrence M. Brown

Merge SortDivide and Conquer

• Merge sort is based on a method of algorithm design called divide andconquer.

• In general:

1. Divide - If the input size is below a certain threshold, solve the problem directly. Otherwise, divide the input data into two or more disjoint set.

2. Recurse - Recursively solve the subproblems associated with the subsets.

3. Conquer - Merge the solutions to the subproblems into a solution of the original problem.

Page 3: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 19993

Merge and Quick SortLawrence M. Brown

Merge SortAlgorithm

• Consider a Sequence, S, with n elements:

• In general:

1. Divide - Remove the elements in S and place into two sequences S1 and S2, each containing about half of the elements.

2. Recurse - Recursively sort sequences S1 and S2.

3. Conquer - Merge the elements of the sorted subsequences, S1 and S2, into a unique sorted sequence.

{ } { }SnxxS

SnxxS

of elements last

of elements first :

2:

2

2

1

∈=∈=

Page 4: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 19994

Merge and Quick SortLawrence M. Brown Merge Sort Tree

• Visualize a merge sort by means of a binary tree, T :

• Each node of T represents a recursive call of the merge-sortalgorithm.

• Associate the root of the T with the sequence S.

• Associate each node v of T as the subset sequences, S1 and S2,associated with the recursive calls.

• The external nodes of T are associated with the individual elementsof S.

Page 5: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 19995

Merge and Quick SortLawrence M. Brown

Merge Sort

Page 6: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 19996

Merge and Quick SortLawrence M. Brown

Merge Sort, Cont.

Page 7: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 19997

Merge and Quick SortLawrence M. Brown

Merge Sort, Cont.

Page 8: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 19998

Merge and Quick SortLawrence M. Brown

Merge Sort, Cont.

Page 9: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 19999

Merge and Quick SortLawrence M. Brown

Merge Sort, Cont.

Page 10: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199910

Merge and Quick SortLawrence M. Brown

Merge Sort, Cont.

Page 11: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199911

Merge and Quick SortLawrence M. Brown

Merging Two Sequences

Algorithm: merge( S1, S2, S ) Input: S1, S2 sorted in ascending order, and S, an empty Sequence Ouptut: Sorted Sequence, S = S1 ∪ S2.

while S1 is not empty and S2 is not empty doif S1.first().element() ≤ S2.first().element() then

S.insertLast( S1.remove( S1.first() ) ) // move first element to end of Selse

S. insertLast( S2.remove( S2.first() ) ) // move first element to end of S

while S1 is not empty do S.insertLast( S1.remove( S1.first() ) ) // move remaining elements of S1 to S

while S2 is not empty do S.insertLast( S2.remove(S2.first() ) ) // move remaining elements of S2 to S

Page 12: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199912

Merge and Quick SortLawrence M. Brown

Merging Two Sequences

Page 13: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199913

Merge and Quick SortLawrence M. Brown

Implementation

public interface SortObject{ // sort sequence S in nondecreasing order using comparator c public void sort( Sequence S, Comparator c );}

• Sequence in merge sort implementation supports newContainer()

// instantiates another container of the same class public Container newContainer() { return (Container)( new Sequence() ); }

• SortObject Interface

Page 14: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199914

Merge and Quick SortLawrence M. Brown

Merge Sort Implementation

public class ListMergeSort implements SortObject {

public void sort( Sequence S, Comparator c ) { int n = S.size();

if (n < 2) return; // a sequence with 0 or 1 element is already sorted

Sequence S1 = (Sequence)S.newContainer(); // dividefor (int i=1; i <= (n+1)/2; i++)

S1.insertLast( S.remove( S.first() ) );

Sequence S2 = (Sequence)S.newContainer();for (int i=1; i <= n/2; i++)

S2.insertLast( S.remove( S.first() ) );

sort( S1, c ); // recursionsort( S2, c );

merge( S1, S2, c, S ); //conquer

Page 15: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199915

Merge and Quick SortLawrence M. Brown

Merge Sort Implementationpublic void merge( Sequence S1, Sequence S2, Comparator c, Sequence S ){

while(!S1.isEmpty() && !S2.isEmpty()) { if( c.isLessThanOrEqualTo( S1.first().element(), S2.first().element() ) )

S.insertLast( S1.remove( S1.first() ) ); // move first element to end of S

elseS.insertLast( S2.remove( S2.first() ) ); // move first element to end of S

}

if( S1.isEmpty() ){ while( !S2.isEmpty() )

{ S.insertLast( S2.remove( S2.first() ) ); // move remaining elements of S2 to S } }

if( S2.isEmpty() ){ while( !S1.isEmpty() )

{ S.insertLast( S1.remove( S1.first() ) ); // move remaining elements of S1 to S } }}

Page 16: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199916

Merge and Quick SortLawrence M. Brown

Running-Time of Merge Sort

• Proposition 1: The merge-sort tree associated with the execution of a merge-sort on a sequence of n elements has a height of log n .

• Proposition 2: A merge sort algorithm sorts a sequence of size n inO( n log n ) time.

• Assume that an access, insert, and delete from the first and lastnodes of S (and subsequences) run in O(1) time.

Page 17: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199917

Merge and Quick SortLawrence M. Brown

Running-Time of Merge Sort• Let the time spent at node v (of merge-sort tree, T ) be the running

time of the recursive call associated with v, excluding the recursive callssent to v’s children (remember each node v holds a sequence ofnumbers).

• Let i represent the depth of the node v in the merge-sort tree, the timespent at node v is O( n/2i ) since the size of the sequence associatedwith v in n/2i.

• Observe that T has exactly 2i nodes at depth i. The total time spent atdepth i in the tree is then

O( # of nodes at the level • time spend at node ) = O( 2in/2i ),

which is O( n ). The tree has height log n .

• Time complexity of merge sort → O( n log n ).

Page 18: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199918

Merge and Quick SortLawrence M. Brown

Quick SortDivide and Conquer

• Quick sort is also based on a divide and conquer algorithm similar tomerge sort; however, a pivot element defines the subsets.

• In general:1. Divide - If the Sequence S has 2 or more elements, select any

element in x as a pivot element. Divide S into 3 subsequenes:- L holds elements < x.- E holds elements equal to x.

- G holds elements > x.

2. Recurse - Recursively sort L and G.

3. Conquer - Merge the three sets together. First insert elements of L,then elements of E , and lastly, insert elements of G .

Page 19: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199919

Merge and Quick SortLawrence M. Brown

Quick Sort

Page 20: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199920

Merge and Quick SortLawrence M. Brown

Quick Sort

Page 21: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199921

Merge and Quick SortLawrence M. Brown

Quick Sort

Page 22: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199922

Merge and Quick SortLawrence M. Brown

Quick Sort

Page 23: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199923

Merge and Quick SortLawrence M. Brown

Quick Sort

Page 24: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199924

Merge and Quick SortLawrence M. Brown

Selection of Pivot Element

• Select the last element is the Sequence as the pivot element, q.

• Then, rearrange the Sequence into (implied) subsets with allelements < q to the left and all elements > q to the right.

q

S

S

q

Page 25: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199925

Merge and Quick SortLawrence M. Brown

Running Time of Quick Sort

• Let si(n) denote the sum of the input sizes of the nodes at depth i in T.

• s0(n) = n, the entire input set is at s0..

• s1(n) = n - 1, the pivot element in not propagated.

• s2(n) = n - 2 or n - 3, depending on whether one of the nodes has zeroelements.

s0(n)

s1(n)

s2(n)

s3(n)

Page 26: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199926

Merge and Quick SortLawrence M. Brown

Running Time of Quick SortWorst Case

• The worst case running time of quick sort is

• In the worst case, quick sort is O(n2).

∑−

=

1

0

)(n

ii nsO

( )12)2()1()(1

0

+++−+−+=

−∑

=

KnnnOinOn

i

)( 2

1

nOiOn

i

=

∑=

Page 27: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199927

Merge and Quick SortLawrence M. Brown

Running Time of Quick SortBest Case

• Best performance of quick sort occurs when the size of L and G areequal.

• Implies that the sort tree has a height of O( log n ), n > 1.

• In the best case, quick sort is O( n log n )†

( )nnOnOnsO

n

i

in

ii log)12()(

log

0

log

0

=

+−=

∑∑

==

†Assuming no duplicate elements.

K

L

K

12)2221()(

7)221()(

3)21()(

1)(

)(

12

23

2

1

0

+−=++++−=

−=++−=−=+−=

−==

− iii nnns

nnns

nnns

nns

nns

Page 28: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199928

Merge and Quick SortLawrence M. Brown

Randomized Quick Sort

• Problem: Quick sort algorithm performs poorly on sorted and “nearly”sorted sequences.

• Modify algorithm to select the pivot element randomly from thesequence.

Best O( n log n ) Subsets Equal Size Unordered (random) Sequence

Worst O( n2 ) One Subset Zero Size Sorted Sequence

[ ] ( )nnOE log timerunning =

Page 29: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/mawad/wp-content/uploads/Merge-and-Quick-Sort… · 2 Merge and Quick Sort Lawrence M. Brown Merge Sort Divide

25 September, 199929

Merge and Quick SortLawrence M. Brown

Summary

• Merge sort recursively divides the Sequence into halves, sorting theelements on the return.

• Merge sort runs in O( n log n ).

• Quick sort follow same idea as merge sort except that a pivot elementdetermines the subsets. Sorting is performed prior to creating eachsubset.

• In quick sort, the last element of the Sequence is typically selected asthe pivot element.

• For quick sort, best case running time is O( n log n), worst case is O(n2).