750 likes | 1.06k Views
Mergesort(array[1,…,n] of Integers): begin Mergesort(array[1,…,n/2]); Mergesort(array[n/2+1,…,n]); Merge(array[1,…,n/2], array[n/2+1,…,n]); end. comparisons required to merge two arrays of size m /2. comparisons to sort n elements. Sorting Algorithms. Example.
E N D
Mergesort(array[1,…,n] of Integers): begin Mergesort(array[1,…,n/2]); Mergesort(array[n/2+1,…,n]); Merge(array[1,…,n/2], array[n/2+1,…,n]); end comparisons required to merge two arrays of size m/2 comparisons to sort n elements Sorting Algorithms Example Order of comparisons not fixed in advance. Not readily implementable in hardware.
sorted Sorting Networks (binary values) inputs outputs 1 0 0 0 0 0 Sorting Network 1 0 0 1 0 1 1 1 1 1
Comparator (2-sorter) outputs inputs min(x, y) x C max(x, y) y
Comparator (2-sorter) AON Implementation outputs inputs x min(x, y) max(x, y) y
Comparator (2-sorter) outputs inputs min(x, y) x max(x, y) y
Comparator (2-sorter) outputs inputs min(x, y) x C max(x, y) y
Comparator (2-sorter) AON Implementation outputs inputs x min(x, y) max(x, y) y
Comparator (2-sorter) outputs inputs min(x, y) x max(x, y) y
1 0 0 0 0 1 0 0 width n 1 0 1 1 0 1 1 1 depth d Comparison Network
1 0 0 0 0 1 0 0 1 0 1 1 0 1 1 1 d stages Comparison Network n / 2 comparisons per stage
1 0 0 0 0 1 0 0 width n 1 0 1 1 0 1 1 1 depth d Comparison Network
1 0 0 0 0 1 0 0 1 0 1 1 0 1 1 1 d stages Comparison Network n / 2 comparisons per stage
Sorting Network Any ideas?
Sorting Network . . . n 1 . . . . . . n Sorting Network inputs outputs
Insertion Sort Network inputs outputs depth2n 3
Batcher Sorting Network Next Lecture
Batcher Sorting Network, n = 8 n = 4 n = 4
sorted sorted Lemma 1 Any subsequence of a sorted sequence is a sorted sequence. 0 0 0 0 0 1 1 1 1 1 1 1 1
sorted Lemma 2 For a sorted sequence, the number of 0’s in the even subsequence is either equal to, or one greater than, the number of 0’s in the odd subsequence. 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 even odd
Lemma 3 For two sorted sequences and : denotes the the number of 0’s in denotes the even subsequence of denotes the odd subsequence of
0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 ¢ ¢ ¢ x x x O E Lemma 3
Lemma 3 For two sorted sequences and : (by Lemma 2) (by Lemma 2)
Merge[4] sorted sorted Merge[4] sorted Merge Network
Merge[4] sorted sorted Merge[4] sorted sorted Merge Network (pf.) (by Lemma 1) (by Lemma 1)
Merge[4] sorted By Lemma 3 and differ by at most 1 Merge[4] sorted Merge Network (pf.)
Merge[4] By Lemma 3 and sorted differ by at most 1 Merge[4] Merge Network (pf.)
Merge[4] By Lemma 3 and differ by at most 1 Merge[4] Merge Network (pf.) 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 1
Sort[4] Merge[8] sorted Sort[4] Batcher Sorting Network
Merge[4] Batcher Sorting Network, n = 4 Sort[2] Sort[2]
Merge[8] Batcher Sorting Network, n = 8 Sort[4] Sort[4]
1 0 0 0 0 1 0 0 width n 1 0 1 1 0 1 1 1 depth d Comparison Network
1 0 0 0 0 1 0 0 1 0 1 1 0 1 1 1 d stages Comparison Network n / 2 comparisons per stage
Sort[4] Merge[8] sorted Sort[4] Batcher Sorting Network
C A D Sorting Network B B C A D Sorting Networks Order of comparisons fixed in advance. Readily implementable in hardware.
Sorting Arbitrary Numbers outputs inputs min(x, y) x max(x, y) y x, y can be values from any linearly ordered set, e.g., integers, reals, etc.
2 2 2 9 9 6 6 2 6 9 9 6 Sorting Arbitrary Numbers sorted
1 1 1 1 5 4 4 5 4 5 5 4 Sorting Arbitrary Numbers sorted
3 3 3 3 7 0 0 7 0 7 7 0 Sorting Arbitrary Numbers not sorted How can we verify if a network sorts all possible input sequences?
inputs outputs Sorting Arbitrary Numbers Try all possible 0/1 sequences.
inputs outputs 0 0 0 0 0 0 0 0 0 0 0 0 Sorting Arbitrary Numbers 000 000 Try all possible 0/1 sequences.
0 0 0 0 0 0 0 0 1 1 1 1 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 Try all possible 0/1 sequences.
0 0 0 0 1 0 0 1 0 1 1 0 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 Try all possible 0/1 sequences.
0 0 0 0 1 1 1 1 1 1 1 1 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 011 011 Try all possible 0/1 sequences.
0 0 0 1 1 0 0 0 0 1 1 0 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 011 011 100 001 Try all possible 0/1 sequences.
0 0 0 1 1 1 1 0 1 1 1 1 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 011 011 100 001 101 011 Try all possible 0/1 sequences.
1 1 1 1 1 0 0 1 0 1 1 0 not sorted! Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 011 011 100 001 101 011 110 101 Try all possible 0/1 sequences.
1 1 1 1 1 1 1 1 1 1 1 1 not sorted! Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 011 011 100 001 101 011 110 101 111 111 Try all possible 0/1 sequences.
inputs outputs Sorting Arbitrary Numbers Try all possible 0/1 sequences.
inputs outputs 0 0 0 0 0 0 0 0 0 0 0 0 Sorting Arbitrary Numbers 000 000 Try all possible 0/1 sequences.