merge and quick sort - islamic university of gazasite.iugaza.edu.ps/.../merge-and-quick-sort.pdf ·...
TRANSCRIPT
![Page 1: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/1.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/2.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/3.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/4.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/5.jpg)
25 September, 19995
Merge and Quick SortLawrence M. Brown
Merge Sort
![Page 6: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/6.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/7.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/8.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/9.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/10.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/11.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/12.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/13.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/14.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/15.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/16.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/17.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/18.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/19.jpg)
25 September, 199919
Merge and Quick SortLawrence M. Brown
Quick Sort
![Page 20: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/20.jpg)
25 September, 199920
Merge and Quick SortLawrence M. Brown
Quick Sort
![Page 21: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/21.jpg)
25 September, 199921
Merge and Quick SortLawrence M. Brown
Quick Sort
![Page 22: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/22.jpg)
25 September, 199922
Merge and Quick SortLawrence M. Brown
Quick Sort
![Page 23: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/23.jpg)
25 September, 199923
Merge and Quick SortLawrence M. Brown
Quick Sort
![Page 24: Merge and Quick Sort - Islamic University of Gazasite.iugaza.edu.ps/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/24.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/25.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/26.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/27.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/28.jpg)
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/.../Merge-and-Quick-Sort.pdf · Merge and Quick Sort Lawrence M. Brown Merge Sort Tree • Visualize a merge sort](https://reader030.vdocuments.mx/reader030/viewer/2022040110/5ec95e8d918cbb6baa072505/html5/thumbnails/29.jpg)
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).