Download Applied Combinatorics, 4th Ed. Alan Tucker

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Big O notation wikipedia , lookup

Transcript
Applied Combinatorics, 4th Ed.
Alan Tucker
Section 3.4
Tree Analysis of Sorting Algorithms
Prepared by:
Nathan Rounds and
David Miller
5/24/2017
Tucker, Sec. 3.4
1
“Big O” Notation
− If we have a function f (x) defined
f (x) = 5x³ + x – 4,
we can approximate its value as a constant multiple of x³ for
large values of x, since 5x³ is the dominating term in the
function (it grows the fastest as x gets large).
− For x = 5, f (x) = 626 and the constant multiple 5(x³) = 625
which is a very close estimate.
− Therefore, we say that f (x) in “Big O” notation is O(x³).
5/24/2017
Tucker, Sec. 3.4
2
Theorem
• In the worst case, the number of binary
comparisons required to sort n items is at
least O(nlog2n).
• This number is a constant multiple of
(nlog2n) which approximates the height of a
binary testing tree (log2n!) for large values
of n.
5/24/2017
Tucker, Sec. 3.4
3
Bubble Sort
For m from 2 to n do:
For i from n (step-1) to m do:
If Ai  Ai-1, then interchange items Ai and Ai-1.
14
i=1
2416
i=2
m = 32
42613
i=3
ii ==324563
6231 i = 4
{
5/24/2017
325
i=5
52
i=6
Tucker, Sec. 3.4
This technique moves the
smallest number to the top,
then the next smallest
number below that until the
set of numbers is in
numerical order.
4
Bubble Sort Comparisons
• When m=2, I goes from n to 2, which means you have to do (n-1)
comparisons
• When m=3, I goes from n to 3, which means you have to do (n-2)
comparisons
• Continuing this trend, the total number of comparisons must be:
 n  1   n  2    1 
n 1
n  n  1
i 1
2
i 
 1 2 n2  1 2 n
 
2
This shows that the Bubble Sort method will require O n comparisons, which is more
then the theoretical bound of O  n log 2 n  .
5/24/2017
Tucker, Sec. 3.4
5
Merge Sort – Setup
• Roughly splits the set in half, until only single elements are left.
54092 67138
540 92
54 0
671 38
67 1
9 2
0
2
9
3 8
1
8
3
5 4
6 7
5
4
5/24/2017
6
Tucker, Sec. 3.4
7
6
Merge Sort - Ordering
• The set then gets “merged” into numerical order.
5
4
6
0
9
45
3
1
2
29
045
7
67
8
38
167
02459
13678
Note: The root of
the tree
is on the bottom
0123456789
5/24/2017
Tucker, Sec. 3.4
7
Complexity of Merging
• Assume that every set has n = 2r elements
– There are r levels
– There are 2k vertices on level k
– On level k, each set will have 2r-k elements
n=
24
++++++++++++++++
++++++++
++++
++++
++ ++ ++ ++
Level 0
++++++++
++++
++++
++ ++ ++ ++
+ +++++++ ++++ ++ + +
5/24/2017
Tucker, Sec. 3.4
Level 1
Level 2
Level 3
Level 4
8
Merge Sort Comparisons
• In general, at each vertex on level k two ordered sublists of 2r-k-1 items
are merged into an ordered sublist of 2r-k items
• This merging requires 2r-k-1 comparisons
• The two ordered sublists on level one merge into the root
• The number of comparisons needed at level k is 2k (2r-k – 1 ) = 2r - 2k
since there are 2k different vertices
• Totaling the number of comparisons needed for a Merge Sort is:
r 1
r 1
r 1
k
r
r
2

2

2

2

r
2

2
 1


 
r
k 0
k
r
k 0
k 0
• With n = 2r this becomes:  log 2 n  n   n  1
• This shows that Merge Sort method requires O  n log 2 n 
comparisons, which achieves the theoretical bound of a binary search.
5/24/2017
Tucker, Sec. 3.4
9
QUIK Sort
• Takes the first element and compares it with the other elements to
divide the list, putting smaller elements into a set on the left and the
larger elements into a set on the right.
5407168239
76 89
401235
01234
5
67
2134
12
5/24/2017
6
89
7
8
9
Once an element is alone
there is no need to continue
to divide it
34
0
1
Puts the first element
at the end of the left list
2
3
4
Tucker, Sec. 3.4
10
Heap Sort
• A binary tree so that the parent is always
bigger than its children
Put the root at the beginning of a list,
then move up the next biggest grandchildren.
6
LIST:
5
3
4
0
5/24/2017
2
1
Tucker, Sec. 3.4
11
Class Exercise
• Sort the following set of numbers using a
bubble sort and then do it using a merge
sort.
S  5,3,8, 23, 6,0, 2,66
• Which sort technique is more efficient for
this set?
5/24/2017
Tucker, Sec. 3.4
12
Bubble Sort Solution
5
5
5
5
-6
-6
-6
-6
-6
3
3
3
-6
5
0
0
0
0
8
8
-6
3
3
5
5
2
2
23
-6
8
8
8
3
2
5
3
-6
23
23
23
23
2
3
3
5
0
0
0
0
0
8
8
8
8
2
2
2
2
2
23
23
23
23
66
66
66
66
66
. . . 66
66
66
66
5/24/2017
Tucker, Sec. 3.4
13
Merge Sort Solution
5 3 8 23 -6 0 2 66
5 3 8 23
5/24/2017
-6 0
8 23
5 3
5
-6 0 2 66
3
8
23
-6
Tucker, Sec. 3.4
2 66
0
2
66
14
Merge Sort Solution cont’d
3
5
23
8
35
8 23
-6
0
-6 0
3 5 8 23
66
2
2 66
-6 0 2 66
-6 0 2 3 5 8 23 66
5/24/2017
Tucker, Sec. 3.4
15
Something to Ponder
• How does one create an initial heap to
perform a heap sort on?
• This will be on the homework. 
5/24/2017
Tucker, Sec. 3.4
16