elementary sorting algorithmsfaculty.salisbury.edu/~stlauterburg/cosc320/lectures/_fa...elementary...
TRANSCRIPT
982017
1
Elementary Sorting Algorithms
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
1
Selection Sort
Insertion Sort
Bubble Sort
Shell Sort
Elementary Sorting Algorithms(Selection Sort)
For each iteration a minimum is found in the unsorted sublistand it is placed into the correct position in the sorted sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
2
1 Selection sort (A)
2
3 for j = 0 to |A|-1 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if A[k] lt A[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1
C2
C3
C4
C5
C6
C7
Elementary Sorting Algorithms(Selection Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
3
6 3 1 4 2 5
1 3 6 4 2 5
1 2 6 4 3 5
1 2 3 4 6 5
1 2 3 4 6 5
1 2 3 4 5 6
Min = 1
Min = 2
Min = 3
Min = 4
Min = 5
Unsorted sub list
Sorted sub list
Swap(A[0] A[2])
Swap(A[1] A[4])
Swap(A[2] A[4])
Swap(A[4] A[5])
Donrsquot need to swap
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
4
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Selection Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
5
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
9 gt 3
j
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Selection Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
6
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
3 gt 7
j
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Selection Sort)
982017
2
Elementary Sorting Algorithms(Selection Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
7
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
3 gt 2
j
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Selection Sort)
8
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
3 gt 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
9
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
3 gt 1
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
10
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
1 gt 4
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
11
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
1 gt 11
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
12
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
1 gt 6
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
3
Elementary Sorting Algorithms(Selection Sort)
13
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
1 gt 5
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
14
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
1 gt 8
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
15
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
1 gt 10
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
16
9 3 7 2 12 1 4 11 6 5 8 10
Min
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
17
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
3 gt 7
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
18
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
3 gt 2
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
4
Elementary Sorting Algorithms(Selection Sort)
19
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
20
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 9
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
21
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 4
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
22
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 11
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
23
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 6
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
24
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 5
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
982017
5
25
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 8
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
26
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 10
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
27
1 3 7 2 12 9 4 11 6 5 8 10
Minimum
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
Elementary Sorting Algorithms(Selection Sort)
28
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
7 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
29
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
30
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
6
Elementary Sorting Algorithms(Selection Sort)
31
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
32
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
33
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
34
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
35
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
36
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
7
Elementary Sorting Algorithms(Selection Sort)
37
1 2 7 3 12 9 4 11 6 5 8 10
Minimum
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
38
1 2 3 7 12 9 4 11 6 5 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
39
1 2 3 4 12 9 7 11 6 5 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
40
1 2 3 4 5 9 7 11 6 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
41
1 2 3 4 5 6 7 11 9 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
42
1 2 3 4 5 6 7 11 9 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
8
Elementary Sorting Algorithms(Selection Sort)
43
1 2 3 4 5 6 7 8 9 12 11 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
44
1 2 3 4 5 6 7 8 9 12 11 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
45
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
46
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
47
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
48
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
9
Elementary Sorting Algorithms(Selection Sort)
49
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
50
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
51
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Best case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
52
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Worst case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
53
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
C5119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Summery)
Selection Sort Analysis
Best Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198626 119899 minus 1
=1198624
21198992 + 1198621 + 1198622 + 1198623 minus
1198624
2+1198626 119899 minus 1198622 + 1198623 +1198626 = Θ(1198992)
Worst Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198625
119899 119899 minus 1
2+ 1198626 119899minus 1 + 1198627 119899 minus 1
= (1198624
2+
1198625
2)1198992 + 1198621 +1198622 + 1198623 minus
1198624
2minus
1198625
2+ 1198626 +1198627 119899 minus 1198622 + 1198623 +1198626 + 1198627 = Θ(1198992)
54COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
10
Elementary Sorting Algorithms(Insertion Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
55
6 3 1 4 2 5
3 6 1 4 2 5
1 3 6 4 2 5
1 3 4 6 2 5
1 2 3 4 6 5
1 2 3 4 5 6
Insert 3
Insert 1
Insert 4
Insert 2
Insert 5
Elementary Sorting Algorithms(Insertion Sort)
For each iteration a element is placed into right position in sorted sub list
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
56
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1
C2
C3
C4
C5
C6
C7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
57
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Working Sublist
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
58
3 7 2 12 1 4 11 6 5 8 10
9 lt 3
9
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 3
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
59
3 7 2 12 1 4 11 6 5 8 10
9 lt 7
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
3 lt 7
7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
60
2 12 1 4 11 6 5 8 10
9 lt 2
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
7 lt 2
7
3 lt 2
3
2
982017
11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
61
2 3 7 9 12 1 4 11 6 5 8 10
9 lt 12
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 12
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
62
4 11 6 5 8 10
12 lt 1
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 1
9
7 lt 1
7
3 lt 1
3
2 lt 1
2
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
63
1 2 3 4 11 6 5 8 10
12 lt 4
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 4
9
7 lt 4
7
3 lt 4
4
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
64
1 2 3 4 7 9 11 6 5 8 10
12 lt 11
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting 11
9 lt 11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
65
1 2 3 4 6 5 8 10
12 lt 6
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 6 9 lt 6 7 lt 6 4 lt 6
1197
6
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
66
1 2 3 4 5 8 10
12 lt 5
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 5 9 lt 5 7 lt 5 6 lt 5 4 lt 5
Inserting
11976
5
982017
12
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
67
1 2 3 4 5 6 7 8 10
12 lt 8
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 8 9 lt 8 7 lt 8
Inserting
119
8
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
68
1 2 3 4 5 6 7 8 9 10
12 lt 10
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 10 9 lt 10
11
10
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
69
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Insert 2
Insert 3
Insert 4
Insert 5
Insert 6
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
70
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1(n ndash 1)
C2(n ndash 1)
C3(n ndash 1)
C4(n ndash 1)
C7(n ndash 1)
T(n) = c1n + c2(n ndash1) + c3(n ndash 1) + c4(n ndash1) + c7(n ndash1) = (c1 + c2 + c3 + c4 + c7)n - (c2 + c3 + c4 + c7)
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
71
6 5 4 3 2 1
5 6 4 3 2 1
4 5 6 3 2 1
3 4 5 6 2 1
2 3 4 5 6 1
1 2 3 4 5 6
Insert 5
Insert 4
Insert 3
Insert 2
Insert 1
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
72
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
1198621(119899 minus 1)
1198624(119899(119899 + 1)
2minus 1)
1198625(119899(119899 minus 1)
2)
1198622(119899 minus 1)
1198623(119899 minus 1)
1198626(119899(119899 minus 1)
2)
1198627(119899 minus 1)
982017
13
Elementary Sorting Algorithms(Insertion Sort Analysis Summery)
Insertion Sort Analysis
Best Case119879 119899 = 1198621 119899 minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624 119899 minus 1 + 1198627 119899 minus 1= 1198621 + 1198622 + 1198623 + 1198624 + 1198627 119899 minus 1198621 + 1198622 + 1198623 + 1198624 + 1198627 = Θ(119899)
Worst Case119879 119899
= 1198621 119899minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624119899 119899 + 1
2minus 1 + 1198625
119899 119899minus 1
2+ 1198626
119899 119899 minus 1
2+ 1198627 119899 minus 1
=1198624
2+
1198625
2+
1198626
21198992 + 1198621 + 1198622 + 1198623 +
1198624
2minus
1198625
2minus
1198626
2+ 1198627 119899 minus 1198621 + 1198622 + 1198623 +1198624 + 1198627 = Θ(1198992)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
73
Elementary Sorting Algorithms(Bubble Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
74
6 3 1 4 2 5
3 1 4 2 5 6
1 3 2 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
Elementary Sorting Algorithms(Bubble Sort)
For each iteration larger element move up (or smaller element move down)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
75
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
C1
C2
C3
C4
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
76
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
77
9 3 7 2 12 1 4 11 6 5 8 10
9 gt 3
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
78
3 9 7 2 12 1 4 11 6 5 8 10
9 gt 7
Sorted Sublist
Unsorted Sublist
982017
14
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
79
3 7 9 2 12 1 4 11 6 5 8 10
9 gt 2
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
80
3 7 2 9 12 1 4 11 6 5 8 10
9 gt 12
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
81
3 7 2 9 12 1 4 11 6 5 8 10
12 gt 1
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
82
3 7 2 9 1 12 4 11 6 5 8 10
12 gt 4
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
83
3 7 2 9 1 4 12 11 6 5 8 10
12 gt 11
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
84
3 7 2 9 1 4 11 12 6 5 8 10
12 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
15
Elementary Sorting Algorithms(Bubble Sort)
85
3 7 2 9 1 4 11 6 12 5 8 10
12 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
86
3 7 2 9 1 4 11 6 5 12 8 10
12 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
87
3 7 2 9 1 4 11 6 5 8 12 10
12 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
88
3 7 2 9 1 4 11 6 5 8 10 12
3 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
89
3 7 2 9 1 4 11 6 5 8 10 12
7 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
90
3 2 7 9 1 4 11 6 5 8 10 12
7 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
16
Elementary Sorting Algorithms(Bubble Sort)
91
3 2 7 9 1 4 11 6 5 8 10 12
9 gt 1
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
92
3 2 7 1 9 4 11 6 5 8 10 12
9 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
93
3 2 7 1 4 9 11 6 5 8 10 12
9 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
94
3 2 7 1 4 9 11 6 5 8 10 12
11 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
95
3 2 7 1 4 9 6 11 5 8 10 12
11 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
96
3 2 7 1 4 9 6 5 11 8 10 12
11 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
2
Elementary Sorting Algorithms(Selection Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
7
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
3 gt 2
j
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Selection Sort)
8
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
3 gt 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
9
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
3 gt 1
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
10
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
1 gt 4
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
11
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
1 gt 11
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
12
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
1 gt 6
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
3
Elementary Sorting Algorithms(Selection Sort)
13
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
1 gt 5
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
14
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
1 gt 8
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
15
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
1 gt 10
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
16
9 3 7 2 12 1 4 11 6 5 8 10
Min
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
17
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
3 gt 7
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
18
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
3 gt 2
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
4
Elementary Sorting Algorithms(Selection Sort)
19
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
20
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 9
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
21
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 4
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
22
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 11
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
23
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 6
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
24
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 5
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
982017
5
25
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 8
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
26
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 10
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
27
1 3 7 2 12 9 4 11 6 5 8 10
Minimum
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
Elementary Sorting Algorithms(Selection Sort)
28
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
7 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
29
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
30
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
6
Elementary Sorting Algorithms(Selection Sort)
31
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
32
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
33
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
34
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
35
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
36
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
7
Elementary Sorting Algorithms(Selection Sort)
37
1 2 7 3 12 9 4 11 6 5 8 10
Minimum
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
38
1 2 3 7 12 9 4 11 6 5 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
39
1 2 3 4 12 9 7 11 6 5 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
40
1 2 3 4 5 9 7 11 6 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
41
1 2 3 4 5 6 7 11 9 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
42
1 2 3 4 5 6 7 11 9 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
8
Elementary Sorting Algorithms(Selection Sort)
43
1 2 3 4 5 6 7 8 9 12 11 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
44
1 2 3 4 5 6 7 8 9 12 11 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
45
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
46
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
47
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
48
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
9
Elementary Sorting Algorithms(Selection Sort)
49
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
50
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
51
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Best case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
52
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Worst case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
53
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
C5119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Summery)
Selection Sort Analysis
Best Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198626 119899 minus 1
=1198624
21198992 + 1198621 + 1198622 + 1198623 minus
1198624
2+1198626 119899 minus 1198622 + 1198623 +1198626 = Θ(1198992)
Worst Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198625
119899 119899 minus 1
2+ 1198626 119899minus 1 + 1198627 119899 minus 1
= (1198624
2+
1198625
2)1198992 + 1198621 +1198622 + 1198623 minus
1198624
2minus
1198625
2+ 1198626 +1198627 119899 minus 1198622 + 1198623 +1198626 + 1198627 = Θ(1198992)
54COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
10
Elementary Sorting Algorithms(Insertion Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
55
6 3 1 4 2 5
3 6 1 4 2 5
1 3 6 4 2 5
1 3 4 6 2 5
1 2 3 4 6 5
1 2 3 4 5 6
Insert 3
Insert 1
Insert 4
Insert 2
Insert 5
Elementary Sorting Algorithms(Insertion Sort)
For each iteration a element is placed into right position in sorted sub list
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
56
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1
C2
C3
C4
C5
C6
C7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
57
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Working Sublist
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
58
3 7 2 12 1 4 11 6 5 8 10
9 lt 3
9
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 3
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
59
3 7 2 12 1 4 11 6 5 8 10
9 lt 7
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
3 lt 7
7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
60
2 12 1 4 11 6 5 8 10
9 lt 2
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
7 lt 2
7
3 lt 2
3
2
982017
11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
61
2 3 7 9 12 1 4 11 6 5 8 10
9 lt 12
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 12
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
62
4 11 6 5 8 10
12 lt 1
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 1
9
7 lt 1
7
3 lt 1
3
2 lt 1
2
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
63
1 2 3 4 11 6 5 8 10
12 lt 4
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 4
9
7 lt 4
7
3 lt 4
4
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
64
1 2 3 4 7 9 11 6 5 8 10
12 lt 11
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting 11
9 lt 11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
65
1 2 3 4 6 5 8 10
12 lt 6
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 6 9 lt 6 7 lt 6 4 lt 6
1197
6
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
66
1 2 3 4 5 8 10
12 lt 5
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 5 9 lt 5 7 lt 5 6 lt 5 4 lt 5
Inserting
11976
5
982017
12
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
67
1 2 3 4 5 6 7 8 10
12 lt 8
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 8 9 lt 8 7 lt 8
Inserting
119
8
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
68
1 2 3 4 5 6 7 8 9 10
12 lt 10
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 10 9 lt 10
11
10
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
69
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Insert 2
Insert 3
Insert 4
Insert 5
Insert 6
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
70
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1(n ndash 1)
C2(n ndash 1)
C3(n ndash 1)
C4(n ndash 1)
C7(n ndash 1)
T(n) = c1n + c2(n ndash1) + c3(n ndash 1) + c4(n ndash1) + c7(n ndash1) = (c1 + c2 + c3 + c4 + c7)n - (c2 + c3 + c4 + c7)
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
71
6 5 4 3 2 1
5 6 4 3 2 1
4 5 6 3 2 1
3 4 5 6 2 1
2 3 4 5 6 1
1 2 3 4 5 6
Insert 5
Insert 4
Insert 3
Insert 2
Insert 1
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
72
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
1198621(119899 minus 1)
1198624(119899(119899 + 1)
2minus 1)
1198625(119899(119899 minus 1)
2)
1198622(119899 minus 1)
1198623(119899 minus 1)
1198626(119899(119899 minus 1)
2)
1198627(119899 minus 1)
982017
13
Elementary Sorting Algorithms(Insertion Sort Analysis Summery)
Insertion Sort Analysis
Best Case119879 119899 = 1198621 119899 minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624 119899 minus 1 + 1198627 119899 minus 1= 1198621 + 1198622 + 1198623 + 1198624 + 1198627 119899 minus 1198621 + 1198622 + 1198623 + 1198624 + 1198627 = Θ(119899)
Worst Case119879 119899
= 1198621 119899minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624119899 119899 + 1
2minus 1 + 1198625
119899 119899minus 1
2+ 1198626
119899 119899 minus 1
2+ 1198627 119899 minus 1
=1198624
2+
1198625
2+
1198626
21198992 + 1198621 + 1198622 + 1198623 +
1198624
2minus
1198625
2minus
1198626
2+ 1198627 119899 minus 1198621 + 1198622 + 1198623 +1198624 + 1198627 = Θ(1198992)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
73
Elementary Sorting Algorithms(Bubble Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
74
6 3 1 4 2 5
3 1 4 2 5 6
1 3 2 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
Elementary Sorting Algorithms(Bubble Sort)
For each iteration larger element move up (or smaller element move down)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
75
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
C1
C2
C3
C4
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
76
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
77
9 3 7 2 12 1 4 11 6 5 8 10
9 gt 3
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
78
3 9 7 2 12 1 4 11 6 5 8 10
9 gt 7
Sorted Sublist
Unsorted Sublist
982017
14
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
79
3 7 9 2 12 1 4 11 6 5 8 10
9 gt 2
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
80
3 7 2 9 12 1 4 11 6 5 8 10
9 gt 12
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
81
3 7 2 9 12 1 4 11 6 5 8 10
12 gt 1
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
82
3 7 2 9 1 12 4 11 6 5 8 10
12 gt 4
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
83
3 7 2 9 1 4 12 11 6 5 8 10
12 gt 11
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
84
3 7 2 9 1 4 11 12 6 5 8 10
12 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
15
Elementary Sorting Algorithms(Bubble Sort)
85
3 7 2 9 1 4 11 6 12 5 8 10
12 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
86
3 7 2 9 1 4 11 6 5 12 8 10
12 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
87
3 7 2 9 1 4 11 6 5 8 12 10
12 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
88
3 7 2 9 1 4 11 6 5 8 10 12
3 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
89
3 7 2 9 1 4 11 6 5 8 10 12
7 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
90
3 2 7 9 1 4 11 6 5 8 10 12
7 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
16
Elementary Sorting Algorithms(Bubble Sort)
91
3 2 7 9 1 4 11 6 5 8 10 12
9 gt 1
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
92
3 2 7 1 9 4 11 6 5 8 10 12
9 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
93
3 2 7 1 4 9 11 6 5 8 10 12
9 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
94
3 2 7 1 4 9 11 6 5 8 10 12
11 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
95
3 2 7 1 4 9 6 11 5 8 10 12
11 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
96
3 2 7 1 4 9 6 5 11 8 10 12
11 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
3
Elementary Sorting Algorithms(Selection Sort)
13
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
1 gt 5
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
14
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
1 gt 8
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
15
9 3 7 2 12 1 4 11 6 5 8 10
Current Min
1 gt 10
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
16
9 3 7 2 12 1 4 11 6 5 8 10
Min
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
17
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
3 gt 7
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
18
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
3 gt 2
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
4
Elementary Sorting Algorithms(Selection Sort)
19
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
20
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 9
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
21
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 4
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
22
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 11
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
23
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 6
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
24
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 5
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
982017
5
25
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 8
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
26
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 10
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
27
1 3 7 2 12 9 4 11 6 5 8 10
Minimum
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
Elementary Sorting Algorithms(Selection Sort)
28
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
7 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
29
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
30
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
6
Elementary Sorting Algorithms(Selection Sort)
31
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
32
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
33
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
34
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
35
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
36
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
7
Elementary Sorting Algorithms(Selection Sort)
37
1 2 7 3 12 9 4 11 6 5 8 10
Minimum
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
38
1 2 3 7 12 9 4 11 6 5 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
39
1 2 3 4 12 9 7 11 6 5 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
40
1 2 3 4 5 9 7 11 6 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
41
1 2 3 4 5 6 7 11 9 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
42
1 2 3 4 5 6 7 11 9 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
8
Elementary Sorting Algorithms(Selection Sort)
43
1 2 3 4 5 6 7 8 9 12 11 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
44
1 2 3 4 5 6 7 8 9 12 11 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
45
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
46
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
47
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
48
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
9
Elementary Sorting Algorithms(Selection Sort)
49
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
50
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
51
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Best case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
52
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Worst case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
53
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
C5119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Summery)
Selection Sort Analysis
Best Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198626 119899 minus 1
=1198624
21198992 + 1198621 + 1198622 + 1198623 minus
1198624
2+1198626 119899 minus 1198622 + 1198623 +1198626 = Θ(1198992)
Worst Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198625
119899 119899 minus 1
2+ 1198626 119899minus 1 + 1198627 119899 minus 1
= (1198624
2+
1198625
2)1198992 + 1198621 +1198622 + 1198623 minus
1198624
2minus
1198625
2+ 1198626 +1198627 119899 minus 1198622 + 1198623 +1198626 + 1198627 = Θ(1198992)
54COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
10
Elementary Sorting Algorithms(Insertion Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
55
6 3 1 4 2 5
3 6 1 4 2 5
1 3 6 4 2 5
1 3 4 6 2 5
1 2 3 4 6 5
1 2 3 4 5 6
Insert 3
Insert 1
Insert 4
Insert 2
Insert 5
Elementary Sorting Algorithms(Insertion Sort)
For each iteration a element is placed into right position in sorted sub list
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
56
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1
C2
C3
C4
C5
C6
C7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
57
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Working Sublist
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
58
3 7 2 12 1 4 11 6 5 8 10
9 lt 3
9
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 3
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
59
3 7 2 12 1 4 11 6 5 8 10
9 lt 7
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
3 lt 7
7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
60
2 12 1 4 11 6 5 8 10
9 lt 2
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
7 lt 2
7
3 lt 2
3
2
982017
11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
61
2 3 7 9 12 1 4 11 6 5 8 10
9 lt 12
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 12
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
62
4 11 6 5 8 10
12 lt 1
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 1
9
7 lt 1
7
3 lt 1
3
2 lt 1
2
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
63
1 2 3 4 11 6 5 8 10
12 lt 4
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 4
9
7 lt 4
7
3 lt 4
4
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
64
1 2 3 4 7 9 11 6 5 8 10
12 lt 11
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting 11
9 lt 11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
65
1 2 3 4 6 5 8 10
12 lt 6
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 6 9 lt 6 7 lt 6 4 lt 6
1197
6
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
66
1 2 3 4 5 8 10
12 lt 5
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 5 9 lt 5 7 lt 5 6 lt 5 4 lt 5
Inserting
11976
5
982017
12
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
67
1 2 3 4 5 6 7 8 10
12 lt 8
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 8 9 lt 8 7 lt 8
Inserting
119
8
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
68
1 2 3 4 5 6 7 8 9 10
12 lt 10
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 10 9 lt 10
11
10
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
69
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Insert 2
Insert 3
Insert 4
Insert 5
Insert 6
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
70
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1(n ndash 1)
C2(n ndash 1)
C3(n ndash 1)
C4(n ndash 1)
C7(n ndash 1)
T(n) = c1n + c2(n ndash1) + c3(n ndash 1) + c4(n ndash1) + c7(n ndash1) = (c1 + c2 + c3 + c4 + c7)n - (c2 + c3 + c4 + c7)
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
71
6 5 4 3 2 1
5 6 4 3 2 1
4 5 6 3 2 1
3 4 5 6 2 1
2 3 4 5 6 1
1 2 3 4 5 6
Insert 5
Insert 4
Insert 3
Insert 2
Insert 1
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
72
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
1198621(119899 minus 1)
1198624(119899(119899 + 1)
2minus 1)
1198625(119899(119899 minus 1)
2)
1198622(119899 minus 1)
1198623(119899 minus 1)
1198626(119899(119899 minus 1)
2)
1198627(119899 minus 1)
982017
13
Elementary Sorting Algorithms(Insertion Sort Analysis Summery)
Insertion Sort Analysis
Best Case119879 119899 = 1198621 119899 minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624 119899 minus 1 + 1198627 119899 minus 1= 1198621 + 1198622 + 1198623 + 1198624 + 1198627 119899 minus 1198621 + 1198622 + 1198623 + 1198624 + 1198627 = Θ(119899)
Worst Case119879 119899
= 1198621 119899minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624119899 119899 + 1
2minus 1 + 1198625
119899 119899minus 1
2+ 1198626
119899 119899 minus 1
2+ 1198627 119899 minus 1
=1198624
2+
1198625
2+
1198626
21198992 + 1198621 + 1198622 + 1198623 +
1198624
2minus
1198625
2minus
1198626
2+ 1198627 119899 minus 1198621 + 1198622 + 1198623 +1198624 + 1198627 = Θ(1198992)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
73
Elementary Sorting Algorithms(Bubble Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
74
6 3 1 4 2 5
3 1 4 2 5 6
1 3 2 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
Elementary Sorting Algorithms(Bubble Sort)
For each iteration larger element move up (or smaller element move down)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
75
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
C1
C2
C3
C4
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
76
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
77
9 3 7 2 12 1 4 11 6 5 8 10
9 gt 3
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
78
3 9 7 2 12 1 4 11 6 5 8 10
9 gt 7
Sorted Sublist
Unsorted Sublist
982017
14
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
79
3 7 9 2 12 1 4 11 6 5 8 10
9 gt 2
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
80
3 7 2 9 12 1 4 11 6 5 8 10
9 gt 12
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
81
3 7 2 9 12 1 4 11 6 5 8 10
12 gt 1
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
82
3 7 2 9 1 12 4 11 6 5 8 10
12 gt 4
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
83
3 7 2 9 1 4 12 11 6 5 8 10
12 gt 11
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
84
3 7 2 9 1 4 11 12 6 5 8 10
12 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
15
Elementary Sorting Algorithms(Bubble Sort)
85
3 7 2 9 1 4 11 6 12 5 8 10
12 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
86
3 7 2 9 1 4 11 6 5 12 8 10
12 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
87
3 7 2 9 1 4 11 6 5 8 12 10
12 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
88
3 7 2 9 1 4 11 6 5 8 10 12
3 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
89
3 7 2 9 1 4 11 6 5 8 10 12
7 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
90
3 2 7 9 1 4 11 6 5 8 10 12
7 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
16
Elementary Sorting Algorithms(Bubble Sort)
91
3 2 7 9 1 4 11 6 5 8 10 12
9 gt 1
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
92
3 2 7 1 9 4 11 6 5 8 10 12
9 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
93
3 2 7 1 4 9 11 6 5 8 10 12
9 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
94
3 2 7 1 4 9 11 6 5 8 10 12
11 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
95
3 2 7 1 4 9 6 11 5 8 10 12
11 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
96
3 2 7 1 4 9 6 5 11 8 10 12
11 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
4
Elementary Sorting Algorithms(Selection Sort)
19
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
20
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 9
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
21
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 4
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
22
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 11
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
23
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 6
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
24
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 5
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
982017
5
25
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 8
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
26
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 10
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
27
1 3 7 2 12 9 4 11 6 5 8 10
Minimum
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
Elementary Sorting Algorithms(Selection Sort)
28
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
7 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
29
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
30
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
6
Elementary Sorting Algorithms(Selection Sort)
31
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
32
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
33
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
34
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
35
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
36
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
7
Elementary Sorting Algorithms(Selection Sort)
37
1 2 7 3 12 9 4 11 6 5 8 10
Minimum
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
38
1 2 3 7 12 9 4 11 6 5 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
39
1 2 3 4 12 9 7 11 6 5 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
40
1 2 3 4 5 9 7 11 6 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
41
1 2 3 4 5 6 7 11 9 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
42
1 2 3 4 5 6 7 11 9 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
8
Elementary Sorting Algorithms(Selection Sort)
43
1 2 3 4 5 6 7 8 9 12 11 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
44
1 2 3 4 5 6 7 8 9 12 11 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
45
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
46
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
47
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
48
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
9
Elementary Sorting Algorithms(Selection Sort)
49
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
50
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
51
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Best case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
52
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Worst case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
53
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
C5119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Summery)
Selection Sort Analysis
Best Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198626 119899 minus 1
=1198624
21198992 + 1198621 + 1198622 + 1198623 minus
1198624
2+1198626 119899 minus 1198622 + 1198623 +1198626 = Θ(1198992)
Worst Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198625
119899 119899 minus 1
2+ 1198626 119899minus 1 + 1198627 119899 minus 1
= (1198624
2+
1198625
2)1198992 + 1198621 +1198622 + 1198623 minus
1198624
2minus
1198625
2+ 1198626 +1198627 119899 minus 1198622 + 1198623 +1198626 + 1198627 = Θ(1198992)
54COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
10
Elementary Sorting Algorithms(Insertion Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
55
6 3 1 4 2 5
3 6 1 4 2 5
1 3 6 4 2 5
1 3 4 6 2 5
1 2 3 4 6 5
1 2 3 4 5 6
Insert 3
Insert 1
Insert 4
Insert 2
Insert 5
Elementary Sorting Algorithms(Insertion Sort)
For each iteration a element is placed into right position in sorted sub list
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
56
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1
C2
C3
C4
C5
C6
C7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
57
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Working Sublist
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
58
3 7 2 12 1 4 11 6 5 8 10
9 lt 3
9
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 3
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
59
3 7 2 12 1 4 11 6 5 8 10
9 lt 7
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
3 lt 7
7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
60
2 12 1 4 11 6 5 8 10
9 lt 2
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
7 lt 2
7
3 lt 2
3
2
982017
11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
61
2 3 7 9 12 1 4 11 6 5 8 10
9 lt 12
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 12
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
62
4 11 6 5 8 10
12 lt 1
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 1
9
7 lt 1
7
3 lt 1
3
2 lt 1
2
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
63
1 2 3 4 11 6 5 8 10
12 lt 4
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 4
9
7 lt 4
7
3 lt 4
4
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
64
1 2 3 4 7 9 11 6 5 8 10
12 lt 11
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting 11
9 lt 11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
65
1 2 3 4 6 5 8 10
12 lt 6
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 6 9 lt 6 7 lt 6 4 lt 6
1197
6
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
66
1 2 3 4 5 8 10
12 lt 5
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 5 9 lt 5 7 lt 5 6 lt 5 4 lt 5
Inserting
11976
5
982017
12
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
67
1 2 3 4 5 6 7 8 10
12 lt 8
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 8 9 lt 8 7 lt 8
Inserting
119
8
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
68
1 2 3 4 5 6 7 8 9 10
12 lt 10
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 10 9 lt 10
11
10
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
69
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Insert 2
Insert 3
Insert 4
Insert 5
Insert 6
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
70
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1(n ndash 1)
C2(n ndash 1)
C3(n ndash 1)
C4(n ndash 1)
C7(n ndash 1)
T(n) = c1n + c2(n ndash1) + c3(n ndash 1) + c4(n ndash1) + c7(n ndash1) = (c1 + c2 + c3 + c4 + c7)n - (c2 + c3 + c4 + c7)
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
71
6 5 4 3 2 1
5 6 4 3 2 1
4 5 6 3 2 1
3 4 5 6 2 1
2 3 4 5 6 1
1 2 3 4 5 6
Insert 5
Insert 4
Insert 3
Insert 2
Insert 1
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
72
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
1198621(119899 minus 1)
1198624(119899(119899 + 1)
2minus 1)
1198625(119899(119899 minus 1)
2)
1198622(119899 minus 1)
1198623(119899 minus 1)
1198626(119899(119899 minus 1)
2)
1198627(119899 minus 1)
982017
13
Elementary Sorting Algorithms(Insertion Sort Analysis Summery)
Insertion Sort Analysis
Best Case119879 119899 = 1198621 119899 minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624 119899 minus 1 + 1198627 119899 minus 1= 1198621 + 1198622 + 1198623 + 1198624 + 1198627 119899 minus 1198621 + 1198622 + 1198623 + 1198624 + 1198627 = Θ(119899)
Worst Case119879 119899
= 1198621 119899minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624119899 119899 + 1
2minus 1 + 1198625
119899 119899minus 1
2+ 1198626
119899 119899 minus 1
2+ 1198627 119899 minus 1
=1198624
2+
1198625
2+
1198626
21198992 + 1198621 + 1198622 + 1198623 +
1198624
2minus
1198625
2minus
1198626
2+ 1198627 119899 minus 1198621 + 1198622 + 1198623 +1198624 + 1198627 = Θ(1198992)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
73
Elementary Sorting Algorithms(Bubble Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
74
6 3 1 4 2 5
3 1 4 2 5 6
1 3 2 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
Elementary Sorting Algorithms(Bubble Sort)
For each iteration larger element move up (or smaller element move down)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
75
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
C1
C2
C3
C4
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
76
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
77
9 3 7 2 12 1 4 11 6 5 8 10
9 gt 3
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
78
3 9 7 2 12 1 4 11 6 5 8 10
9 gt 7
Sorted Sublist
Unsorted Sublist
982017
14
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
79
3 7 9 2 12 1 4 11 6 5 8 10
9 gt 2
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
80
3 7 2 9 12 1 4 11 6 5 8 10
9 gt 12
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
81
3 7 2 9 12 1 4 11 6 5 8 10
12 gt 1
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
82
3 7 2 9 1 12 4 11 6 5 8 10
12 gt 4
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
83
3 7 2 9 1 4 12 11 6 5 8 10
12 gt 11
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
84
3 7 2 9 1 4 11 12 6 5 8 10
12 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
15
Elementary Sorting Algorithms(Bubble Sort)
85
3 7 2 9 1 4 11 6 12 5 8 10
12 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
86
3 7 2 9 1 4 11 6 5 12 8 10
12 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
87
3 7 2 9 1 4 11 6 5 8 12 10
12 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
88
3 7 2 9 1 4 11 6 5 8 10 12
3 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
89
3 7 2 9 1 4 11 6 5 8 10 12
7 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
90
3 2 7 9 1 4 11 6 5 8 10 12
7 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
16
Elementary Sorting Algorithms(Bubble Sort)
91
3 2 7 9 1 4 11 6 5 8 10 12
9 gt 1
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
92
3 2 7 1 9 4 11 6 5 8 10 12
9 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
93
3 2 7 1 4 9 11 6 5 8 10 12
9 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
94
3 2 7 1 4 9 11 6 5 8 10 12
11 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
95
3 2 7 1 4 9 6 11 5 8 10 12
11 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
96
3 2 7 1 4 9 6 5 11 8 10 12
11 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
5
25
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 8
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
26
1 3 7 2 12 9 4 11 6 5 8 10
Current Min
2 gt 10
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
27
1 3 7 2 12 9 4 11 6 5 8 10
Minimum
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
Elementary Sorting Algorithms(Selection Sort)
28
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
7 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
29
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
30
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
6
Elementary Sorting Algorithms(Selection Sort)
31
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
32
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
33
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
34
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
35
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
36
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
7
Elementary Sorting Algorithms(Selection Sort)
37
1 2 7 3 12 9 4 11 6 5 8 10
Minimum
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
38
1 2 3 7 12 9 4 11 6 5 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
39
1 2 3 4 12 9 7 11 6 5 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
40
1 2 3 4 5 9 7 11 6 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
41
1 2 3 4 5 6 7 11 9 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
42
1 2 3 4 5 6 7 11 9 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
8
Elementary Sorting Algorithms(Selection Sort)
43
1 2 3 4 5 6 7 8 9 12 11 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
44
1 2 3 4 5 6 7 8 9 12 11 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
45
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
46
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
47
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
48
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
9
Elementary Sorting Algorithms(Selection Sort)
49
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
50
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
51
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Best case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
52
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Worst case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
53
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
C5119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Summery)
Selection Sort Analysis
Best Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198626 119899 minus 1
=1198624
21198992 + 1198621 + 1198622 + 1198623 minus
1198624
2+1198626 119899 minus 1198622 + 1198623 +1198626 = Θ(1198992)
Worst Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198625
119899 119899 minus 1
2+ 1198626 119899minus 1 + 1198627 119899 minus 1
= (1198624
2+
1198625
2)1198992 + 1198621 +1198622 + 1198623 minus
1198624
2minus
1198625
2+ 1198626 +1198627 119899 minus 1198622 + 1198623 +1198626 + 1198627 = Θ(1198992)
54COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
10
Elementary Sorting Algorithms(Insertion Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
55
6 3 1 4 2 5
3 6 1 4 2 5
1 3 6 4 2 5
1 3 4 6 2 5
1 2 3 4 6 5
1 2 3 4 5 6
Insert 3
Insert 1
Insert 4
Insert 2
Insert 5
Elementary Sorting Algorithms(Insertion Sort)
For each iteration a element is placed into right position in sorted sub list
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
56
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1
C2
C3
C4
C5
C6
C7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
57
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Working Sublist
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
58
3 7 2 12 1 4 11 6 5 8 10
9 lt 3
9
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 3
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
59
3 7 2 12 1 4 11 6 5 8 10
9 lt 7
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
3 lt 7
7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
60
2 12 1 4 11 6 5 8 10
9 lt 2
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
7 lt 2
7
3 lt 2
3
2
982017
11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
61
2 3 7 9 12 1 4 11 6 5 8 10
9 lt 12
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 12
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
62
4 11 6 5 8 10
12 lt 1
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 1
9
7 lt 1
7
3 lt 1
3
2 lt 1
2
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
63
1 2 3 4 11 6 5 8 10
12 lt 4
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 4
9
7 lt 4
7
3 lt 4
4
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
64
1 2 3 4 7 9 11 6 5 8 10
12 lt 11
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting 11
9 lt 11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
65
1 2 3 4 6 5 8 10
12 lt 6
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 6 9 lt 6 7 lt 6 4 lt 6
1197
6
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
66
1 2 3 4 5 8 10
12 lt 5
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 5 9 lt 5 7 lt 5 6 lt 5 4 lt 5
Inserting
11976
5
982017
12
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
67
1 2 3 4 5 6 7 8 10
12 lt 8
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 8 9 lt 8 7 lt 8
Inserting
119
8
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
68
1 2 3 4 5 6 7 8 9 10
12 lt 10
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 10 9 lt 10
11
10
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
69
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Insert 2
Insert 3
Insert 4
Insert 5
Insert 6
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
70
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1(n ndash 1)
C2(n ndash 1)
C3(n ndash 1)
C4(n ndash 1)
C7(n ndash 1)
T(n) = c1n + c2(n ndash1) + c3(n ndash 1) + c4(n ndash1) + c7(n ndash1) = (c1 + c2 + c3 + c4 + c7)n - (c2 + c3 + c4 + c7)
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
71
6 5 4 3 2 1
5 6 4 3 2 1
4 5 6 3 2 1
3 4 5 6 2 1
2 3 4 5 6 1
1 2 3 4 5 6
Insert 5
Insert 4
Insert 3
Insert 2
Insert 1
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
72
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
1198621(119899 minus 1)
1198624(119899(119899 + 1)
2minus 1)
1198625(119899(119899 minus 1)
2)
1198622(119899 minus 1)
1198623(119899 minus 1)
1198626(119899(119899 minus 1)
2)
1198627(119899 minus 1)
982017
13
Elementary Sorting Algorithms(Insertion Sort Analysis Summery)
Insertion Sort Analysis
Best Case119879 119899 = 1198621 119899 minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624 119899 minus 1 + 1198627 119899 minus 1= 1198621 + 1198622 + 1198623 + 1198624 + 1198627 119899 minus 1198621 + 1198622 + 1198623 + 1198624 + 1198627 = Θ(119899)
Worst Case119879 119899
= 1198621 119899minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624119899 119899 + 1
2minus 1 + 1198625
119899 119899minus 1
2+ 1198626
119899 119899 minus 1
2+ 1198627 119899 minus 1
=1198624
2+
1198625
2+
1198626
21198992 + 1198621 + 1198622 + 1198623 +
1198624
2minus
1198625
2minus
1198626
2+ 1198627 119899 minus 1198621 + 1198622 + 1198623 +1198624 + 1198627 = Θ(1198992)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
73
Elementary Sorting Algorithms(Bubble Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
74
6 3 1 4 2 5
3 1 4 2 5 6
1 3 2 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
Elementary Sorting Algorithms(Bubble Sort)
For each iteration larger element move up (or smaller element move down)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
75
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
C1
C2
C3
C4
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
76
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
77
9 3 7 2 12 1 4 11 6 5 8 10
9 gt 3
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
78
3 9 7 2 12 1 4 11 6 5 8 10
9 gt 7
Sorted Sublist
Unsorted Sublist
982017
14
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
79
3 7 9 2 12 1 4 11 6 5 8 10
9 gt 2
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
80
3 7 2 9 12 1 4 11 6 5 8 10
9 gt 12
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
81
3 7 2 9 12 1 4 11 6 5 8 10
12 gt 1
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
82
3 7 2 9 1 12 4 11 6 5 8 10
12 gt 4
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
83
3 7 2 9 1 4 12 11 6 5 8 10
12 gt 11
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
84
3 7 2 9 1 4 11 12 6 5 8 10
12 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
15
Elementary Sorting Algorithms(Bubble Sort)
85
3 7 2 9 1 4 11 6 12 5 8 10
12 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
86
3 7 2 9 1 4 11 6 5 12 8 10
12 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
87
3 7 2 9 1 4 11 6 5 8 12 10
12 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
88
3 7 2 9 1 4 11 6 5 8 10 12
3 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
89
3 7 2 9 1 4 11 6 5 8 10 12
7 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
90
3 2 7 9 1 4 11 6 5 8 10 12
7 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
16
Elementary Sorting Algorithms(Bubble Sort)
91
3 2 7 9 1 4 11 6 5 8 10 12
9 gt 1
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
92
3 2 7 1 9 4 11 6 5 8 10 12
9 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
93
3 2 7 1 4 9 11 6 5 8 10 12
9 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
94
3 2 7 1 4 9 11 6 5 8 10 12
11 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
95
3 2 7 1 4 9 6 11 5 8 10 12
11 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
96
3 2 7 1 4 9 6 5 11 8 10 12
11 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
6
Elementary Sorting Algorithms(Selection Sort)
31
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
32
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
33
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
34
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
35
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
36
1 2 7 3 12 9 4 11 6 5 8 10
Current Min
j
3 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
7
Elementary Sorting Algorithms(Selection Sort)
37
1 2 7 3 12 9 4 11 6 5 8 10
Minimum
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
38
1 2 3 7 12 9 4 11 6 5 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
39
1 2 3 4 12 9 7 11 6 5 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
40
1 2 3 4 5 9 7 11 6 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
41
1 2 3 4 5 6 7 11 9 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
42
1 2 3 4 5 6 7 11 9 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
8
Elementary Sorting Algorithms(Selection Sort)
43
1 2 3 4 5 6 7 8 9 12 11 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
44
1 2 3 4 5 6 7 8 9 12 11 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
45
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
46
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
47
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
48
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
9
Elementary Sorting Algorithms(Selection Sort)
49
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
50
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
51
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Best case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
52
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Worst case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
53
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
C5119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Summery)
Selection Sort Analysis
Best Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198626 119899 minus 1
=1198624
21198992 + 1198621 + 1198622 + 1198623 minus
1198624
2+1198626 119899 minus 1198622 + 1198623 +1198626 = Θ(1198992)
Worst Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198625
119899 119899 minus 1
2+ 1198626 119899minus 1 + 1198627 119899 minus 1
= (1198624
2+
1198625
2)1198992 + 1198621 +1198622 + 1198623 minus
1198624
2minus
1198625
2+ 1198626 +1198627 119899 minus 1198622 + 1198623 +1198626 + 1198627 = Θ(1198992)
54COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
10
Elementary Sorting Algorithms(Insertion Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
55
6 3 1 4 2 5
3 6 1 4 2 5
1 3 6 4 2 5
1 3 4 6 2 5
1 2 3 4 6 5
1 2 3 4 5 6
Insert 3
Insert 1
Insert 4
Insert 2
Insert 5
Elementary Sorting Algorithms(Insertion Sort)
For each iteration a element is placed into right position in sorted sub list
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
56
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1
C2
C3
C4
C5
C6
C7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
57
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Working Sublist
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
58
3 7 2 12 1 4 11 6 5 8 10
9 lt 3
9
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 3
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
59
3 7 2 12 1 4 11 6 5 8 10
9 lt 7
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
3 lt 7
7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
60
2 12 1 4 11 6 5 8 10
9 lt 2
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
7 lt 2
7
3 lt 2
3
2
982017
11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
61
2 3 7 9 12 1 4 11 6 5 8 10
9 lt 12
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 12
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
62
4 11 6 5 8 10
12 lt 1
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 1
9
7 lt 1
7
3 lt 1
3
2 lt 1
2
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
63
1 2 3 4 11 6 5 8 10
12 lt 4
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 4
9
7 lt 4
7
3 lt 4
4
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
64
1 2 3 4 7 9 11 6 5 8 10
12 lt 11
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting 11
9 lt 11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
65
1 2 3 4 6 5 8 10
12 lt 6
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 6 9 lt 6 7 lt 6 4 lt 6
1197
6
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
66
1 2 3 4 5 8 10
12 lt 5
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 5 9 lt 5 7 lt 5 6 lt 5 4 lt 5
Inserting
11976
5
982017
12
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
67
1 2 3 4 5 6 7 8 10
12 lt 8
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 8 9 lt 8 7 lt 8
Inserting
119
8
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
68
1 2 3 4 5 6 7 8 9 10
12 lt 10
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 10 9 lt 10
11
10
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
69
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Insert 2
Insert 3
Insert 4
Insert 5
Insert 6
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
70
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1(n ndash 1)
C2(n ndash 1)
C3(n ndash 1)
C4(n ndash 1)
C7(n ndash 1)
T(n) = c1n + c2(n ndash1) + c3(n ndash 1) + c4(n ndash1) + c7(n ndash1) = (c1 + c2 + c3 + c4 + c7)n - (c2 + c3 + c4 + c7)
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
71
6 5 4 3 2 1
5 6 4 3 2 1
4 5 6 3 2 1
3 4 5 6 2 1
2 3 4 5 6 1
1 2 3 4 5 6
Insert 5
Insert 4
Insert 3
Insert 2
Insert 1
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
72
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
1198621(119899 minus 1)
1198624(119899(119899 + 1)
2minus 1)
1198625(119899(119899 minus 1)
2)
1198622(119899 minus 1)
1198623(119899 minus 1)
1198626(119899(119899 minus 1)
2)
1198627(119899 minus 1)
982017
13
Elementary Sorting Algorithms(Insertion Sort Analysis Summery)
Insertion Sort Analysis
Best Case119879 119899 = 1198621 119899 minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624 119899 minus 1 + 1198627 119899 minus 1= 1198621 + 1198622 + 1198623 + 1198624 + 1198627 119899 minus 1198621 + 1198622 + 1198623 + 1198624 + 1198627 = Θ(119899)
Worst Case119879 119899
= 1198621 119899minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624119899 119899 + 1
2minus 1 + 1198625
119899 119899minus 1
2+ 1198626
119899 119899 minus 1
2+ 1198627 119899 minus 1
=1198624
2+
1198625
2+
1198626
21198992 + 1198621 + 1198622 + 1198623 +
1198624
2minus
1198625
2minus
1198626
2+ 1198627 119899 minus 1198621 + 1198622 + 1198623 +1198624 + 1198627 = Θ(1198992)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
73
Elementary Sorting Algorithms(Bubble Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
74
6 3 1 4 2 5
3 1 4 2 5 6
1 3 2 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
Elementary Sorting Algorithms(Bubble Sort)
For each iteration larger element move up (or smaller element move down)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
75
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
C1
C2
C3
C4
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
76
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
77
9 3 7 2 12 1 4 11 6 5 8 10
9 gt 3
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
78
3 9 7 2 12 1 4 11 6 5 8 10
9 gt 7
Sorted Sublist
Unsorted Sublist
982017
14
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
79
3 7 9 2 12 1 4 11 6 5 8 10
9 gt 2
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
80
3 7 2 9 12 1 4 11 6 5 8 10
9 gt 12
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
81
3 7 2 9 12 1 4 11 6 5 8 10
12 gt 1
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
82
3 7 2 9 1 12 4 11 6 5 8 10
12 gt 4
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
83
3 7 2 9 1 4 12 11 6 5 8 10
12 gt 11
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
84
3 7 2 9 1 4 11 12 6 5 8 10
12 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
15
Elementary Sorting Algorithms(Bubble Sort)
85
3 7 2 9 1 4 11 6 12 5 8 10
12 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
86
3 7 2 9 1 4 11 6 5 12 8 10
12 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
87
3 7 2 9 1 4 11 6 5 8 12 10
12 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
88
3 7 2 9 1 4 11 6 5 8 10 12
3 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
89
3 7 2 9 1 4 11 6 5 8 10 12
7 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
90
3 2 7 9 1 4 11 6 5 8 10 12
7 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
16
Elementary Sorting Algorithms(Bubble Sort)
91
3 2 7 9 1 4 11 6 5 8 10 12
9 gt 1
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
92
3 2 7 1 9 4 11 6 5 8 10 12
9 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
93
3 2 7 1 4 9 11 6 5 8 10 12
9 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
94
3 2 7 1 4 9 11 6 5 8 10 12
11 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
95
3 2 7 1 4 9 6 11 5 8 10 12
11 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
96
3 2 7 1 4 9 6 5 11 8 10 12
11 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
7
Elementary Sorting Algorithms(Selection Sort)
37
1 2 7 3 12 9 4 11 6 5 8 10
Minimum
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
38
1 2 3 7 12 9 4 11 6 5 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
39
1 2 3 4 12 9 7 11 6 5 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
40
1 2 3 4 5 9 7 11 6 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
41
1 2 3 4 5 6 7 11 9 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
42
1 2 3 4 5 6 7 11 9 12 8 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
8
Elementary Sorting Algorithms(Selection Sort)
43
1 2 3 4 5 6 7 8 9 12 11 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
44
1 2 3 4 5 6 7 8 9 12 11 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
45
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
46
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
47
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
48
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
9
Elementary Sorting Algorithms(Selection Sort)
49
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
50
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
51
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Best case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
52
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Worst case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
53
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
C5119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Summery)
Selection Sort Analysis
Best Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198626 119899 minus 1
=1198624
21198992 + 1198621 + 1198622 + 1198623 minus
1198624
2+1198626 119899 minus 1198622 + 1198623 +1198626 = Θ(1198992)
Worst Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198625
119899 119899 minus 1
2+ 1198626 119899minus 1 + 1198627 119899 minus 1
= (1198624
2+
1198625
2)1198992 + 1198621 +1198622 + 1198623 minus
1198624
2minus
1198625
2+ 1198626 +1198627 119899 minus 1198622 + 1198623 +1198626 + 1198627 = Θ(1198992)
54COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
10
Elementary Sorting Algorithms(Insertion Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
55
6 3 1 4 2 5
3 6 1 4 2 5
1 3 6 4 2 5
1 3 4 6 2 5
1 2 3 4 6 5
1 2 3 4 5 6
Insert 3
Insert 1
Insert 4
Insert 2
Insert 5
Elementary Sorting Algorithms(Insertion Sort)
For each iteration a element is placed into right position in sorted sub list
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
56
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1
C2
C3
C4
C5
C6
C7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
57
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Working Sublist
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
58
3 7 2 12 1 4 11 6 5 8 10
9 lt 3
9
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 3
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
59
3 7 2 12 1 4 11 6 5 8 10
9 lt 7
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
3 lt 7
7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
60
2 12 1 4 11 6 5 8 10
9 lt 2
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
7 lt 2
7
3 lt 2
3
2
982017
11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
61
2 3 7 9 12 1 4 11 6 5 8 10
9 lt 12
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 12
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
62
4 11 6 5 8 10
12 lt 1
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 1
9
7 lt 1
7
3 lt 1
3
2 lt 1
2
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
63
1 2 3 4 11 6 5 8 10
12 lt 4
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 4
9
7 lt 4
7
3 lt 4
4
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
64
1 2 3 4 7 9 11 6 5 8 10
12 lt 11
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting 11
9 lt 11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
65
1 2 3 4 6 5 8 10
12 lt 6
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 6 9 lt 6 7 lt 6 4 lt 6
1197
6
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
66
1 2 3 4 5 8 10
12 lt 5
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 5 9 lt 5 7 lt 5 6 lt 5 4 lt 5
Inserting
11976
5
982017
12
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
67
1 2 3 4 5 6 7 8 10
12 lt 8
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 8 9 lt 8 7 lt 8
Inserting
119
8
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
68
1 2 3 4 5 6 7 8 9 10
12 lt 10
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 10 9 lt 10
11
10
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
69
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Insert 2
Insert 3
Insert 4
Insert 5
Insert 6
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
70
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1(n ndash 1)
C2(n ndash 1)
C3(n ndash 1)
C4(n ndash 1)
C7(n ndash 1)
T(n) = c1n + c2(n ndash1) + c3(n ndash 1) + c4(n ndash1) + c7(n ndash1) = (c1 + c2 + c3 + c4 + c7)n - (c2 + c3 + c4 + c7)
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
71
6 5 4 3 2 1
5 6 4 3 2 1
4 5 6 3 2 1
3 4 5 6 2 1
2 3 4 5 6 1
1 2 3 4 5 6
Insert 5
Insert 4
Insert 3
Insert 2
Insert 1
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
72
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
1198621(119899 minus 1)
1198624(119899(119899 + 1)
2minus 1)
1198625(119899(119899 minus 1)
2)
1198622(119899 minus 1)
1198623(119899 minus 1)
1198626(119899(119899 minus 1)
2)
1198627(119899 minus 1)
982017
13
Elementary Sorting Algorithms(Insertion Sort Analysis Summery)
Insertion Sort Analysis
Best Case119879 119899 = 1198621 119899 minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624 119899 minus 1 + 1198627 119899 minus 1= 1198621 + 1198622 + 1198623 + 1198624 + 1198627 119899 minus 1198621 + 1198622 + 1198623 + 1198624 + 1198627 = Θ(119899)
Worst Case119879 119899
= 1198621 119899minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624119899 119899 + 1
2minus 1 + 1198625
119899 119899minus 1
2+ 1198626
119899 119899 minus 1
2+ 1198627 119899 minus 1
=1198624
2+
1198625
2+
1198626
21198992 + 1198621 + 1198622 + 1198623 +
1198624
2minus
1198625
2minus
1198626
2+ 1198627 119899 minus 1198621 + 1198622 + 1198623 +1198624 + 1198627 = Θ(1198992)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
73
Elementary Sorting Algorithms(Bubble Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
74
6 3 1 4 2 5
3 1 4 2 5 6
1 3 2 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
Elementary Sorting Algorithms(Bubble Sort)
For each iteration larger element move up (or smaller element move down)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
75
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
C1
C2
C3
C4
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
76
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
77
9 3 7 2 12 1 4 11 6 5 8 10
9 gt 3
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
78
3 9 7 2 12 1 4 11 6 5 8 10
9 gt 7
Sorted Sublist
Unsorted Sublist
982017
14
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
79
3 7 9 2 12 1 4 11 6 5 8 10
9 gt 2
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
80
3 7 2 9 12 1 4 11 6 5 8 10
9 gt 12
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
81
3 7 2 9 12 1 4 11 6 5 8 10
12 gt 1
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
82
3 7 2 9 1 12 4 11 6 5 8 10
12 gt 4
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
83
3 7 2 9 1 4 12 11 6 5 8 10
12 gt 11
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
84
3 7 2 9 1 4 11 12 6 5 8 10
12 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
15
Elementary Sorting Algorithms(Bubble Sort)
85
3 7 2 9 1 4 11 6 12 5 8 10
12 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
86
3 7 2 9 1 4 11 6 5 12 8 10
12 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
87
3 7 2 9 1 4 11 6 5 8 12 10
12 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
88
3 7 2 9 1 4 11 6 5 8 10 12
3 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
89
3 7 2 9 1 4 11 6 5 8 10 12
7 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
90
3 2 7 9 1 4 11 6 5 8 10 12
7 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
16
Elementary Sorting Algorithms(Bubble Sort)
91
3 2 7 9 1 4 11 6 5 8 10 12
9 gt 1
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
92
3 2 7 1 9 4 11 6 5 8 10 12
9 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
93
3 2 7 1 4 9 11 6 5 8 10 12
9 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
94
3 2 7 1 4 9 11 6 5 8 10 12
11 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
95
3 2 7 1 4 9 6 11 5 8 10 12
11 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
96
3 2 7 1 4 9 6 5 11 8 10 12
11 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
8
Elementary Sorting Algorithms(Selection Sort)
43
1 2 3 4 5 6 7 8 9 12 11 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
44
1 2 3 4 5 6 7 8 9 12 11 10
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
45
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
46
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
47
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
48
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
9
Elementary Sorting Algorithms(Selection Sort)
49
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
50
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
51
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Best case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
52
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Worst case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
53
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
C5119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Summery)
Selection Sort Analysis
Best Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198626 119899 minus 1
=1198624
21198992 + 1198621 + 1198622 + 1198623 minus
1198624
2+1198626 119899 minus 1198622 + 1198623 +1198626 = Θ(1198992)
Worst Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198625
119899 119899 minus 1
2+ 1198626 119899minus 1 + 1198627 119899 minus 1
= (1198624
2+
1198625
2)1198992 + 1198621 +1198622 + 1198623 minus
1198624
2minus
1198625
2+ 1198626 +1198627 119899 minus 1198622 + 1198623 +1198626 + 1198627 = Θ(1198992)
54COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
10
Elementary Sorting Algorithms(Insertion Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
55
6 3 1 4 2 5
3 6 1 4 2 5
1 3 6 4 2 5
1 3 4 6 2 5
1 2 3 4 6 5
1 2 3 4 5 6
Insert 3
Insert 1
Insert 4
Insert 2
Insert 5
Elementary Sorting Algorithms(Insertion Sort)
For each iteration a element is placed into right position in sorted sub list
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
56
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1
C2
C3
C4
C5
C6
C7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
57
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Working Sublist
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
58
3 7 2 12 1 4 11 6 5 8 10
9 lt 3
9
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 3
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
59
3 7 2 12 1 4 11 6 5 8 10
9 lt 7
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
3 lt 7
7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
60
2 12 1 4 11 6 5 8 10
9 lt 2
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
7 lt 2
7
3 lt 2
3
2
982017
11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
61
2 3 7 9 12 1 4 11 6 5 8 10
9 lt 12
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 12
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
62
4 11 6 5 8 10
12 lt 1
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 1
9
7 lt 1
7
3 lt 1
3
2 lt 1
2
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
63
1 2 3 4 11 6 5 8 10
12 lt 4
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 4
9
7 lt 4
7
3 lt 4
4
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
64
1 2 3 4 7 9 11 6 5 8 10
12 lt 11
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting 11
9 lt 11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
65
1 2 3 4 6 5 8 10
12 lt 6
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 6 9 lt 6 7 lt 6 4 lt 6
1197
6
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
66
1 2 3 4 5 8 10
12 lt 5
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 5 9 lt 5 7 lt 5 6 lt 5 4 lt 5
Inserting
11976
5
982017
12
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
67
1 2 3 4 5 6 7 8 10
12 lt 8
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 8 9 lt 8 7 lt 8
Inserting
119
8
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
68
1 2 3 4 5 6 7 8 9 10
12 lt 10
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 10 9 lt 10
11
10
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
69
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Insert 2
Insert 3
Insert 4
Insert 5
Insert 6
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
70
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1(n ndash 1)
C2(n ndash 1)
C3(n ndash 1)
C4(n ndash 1)
C7(n ndash 1)
T(n) = c1n + c2(n ndash1) + c3(n ndash 1) + c4(n ndash1) + c7(n ndash1) = (c1 + c2 + c3 + c4 + c7)n - (c2 + c3 + c4 + c7)
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
71
6 5 4 3 2 1
5 6 4 3 2 1
4 5 6 3 2 1
3 4 5 6 2 1
2 3 4 5 6 1
1 2 3 4 5 6
Insert 5
Insert 4
Insert 3
Insert 2
Insert 1
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
72
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
1198621(119899 minus 1)
1198624(119899(119899 + 1)
2minus 1)
1198625(119899(119899 minus 1)
2)
1198622(119899 minus 1)
1198623(119899 minus 1)
1198626(119899(119899 minus 1)
2)
1198627(119899 minus 1)
982017
13
Elementary Sorting Algorithms(Insertion Sort Analysis Summery)
Insertion Sort Analysis
Best Case119879 119899 = 1198621 119899 minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624 119899 minus 1 + 1198627 119899 minus 1= 1198621 + 1198622 + 1198623 + 1198624 + 1198627 119899 minus 1198621 + 1198622 + 1198623 + 1198624 + 1198627 = Θ(119899)
Worst Case119879 119899
= 1198621 119899minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624119899 119899 + 1
2minus 1 + 1198625
119899 119899minus 1
2+ 1198626
119899 119899 minus 1
2+ 1198627 119899 minus 1
=1198624
2+
1198625
2+
1198626
21198992 + 1198621 + 1198622 + 1198623 +
1198624
2minus
1198625
2minus
1198626
2+ 1198627 119899 minus 1198621 + 1198622 + 1198623 +1198624 + 1198627 = Θ(1198992)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
73
Elementary Sorting Algorithms(Bubble Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
74
6 3 1 4 2 5
3 1 4 2 5 6
1 3 2 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
Elementary Sorting Algorithms(Bubble Sort)
For each iteration larger element move up (or smaller element move down)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
75
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
C1
C2
C3
C4
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
76
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
77
9 3 7 2 12 1 4 11 6 5 8 10
9 gt 3
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
78
3 9 7 2 12 1 4 11 6 5 8 10
9 gt 7
Sorted Sublist
Unsorted Sublist
982017
14
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
79
3 7 9 2 12 1 4 11 6 5 8 10
9 gt 2
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
80
3 7 2 9 12 1 4 11 6 5 8 10
9 gt 12
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
81
3 7 2 9 12 1 4 11 6 5 8 10
12 gt 1
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
82
3 7 2 9 1 12 4 11 6 5 8 10
12 gt 4
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
83
3 7 2 9 1 4 12 11 6 5 8 10
12 gt 11
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
84
3 7 2 9 1 4 11 12 6 5 8 10
12 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
15
Elementary Sorting Algorithms(Bubble Sort)
85
3 7 2 9 1 4 11 6 12 5 8 10
12 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
86
3 7 2 9 1 4 11 6 5 12 8 10
12 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
87
3 7 2 9 1 4 11 6 5 8 12 10
12 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
88
3 7 2 9 1 4 11 6 5 8 10 12
3 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
89
3 7 2 9 1 4 11 6 5 8 10 12
7 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
90
3 2 7 9 1 4 11 6 5 8 10 12
7 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
16
Elementary Sorting Algorithms(Bubble Sort)
91
3 2 7 9 1 4 11 6 5 8 10 12
9 gt 1
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
92
3 2 7 1 9 4 11 6 5 8 10 12
9 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
93
3 2 7 1 4 9 11 6 5 8 10 12
9 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
94
3 2 7 1 4 9 11 6 5 8 10 12
11 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
95
3 2 7 1 4 9 6 11 5 8 10 12
11 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
96
3 2 7 1 4 9 6 5 11 8 10 12
11 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
9
Elementary Sorting Algorithms(Selection Sort)
49
1 2 3 4 5 6 7 8 9 10 11 12
j
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
50
1 2 3 4 5 6 7 8 9 10 11 12
j
Minimum
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort)
51
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Best case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
52
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Worst case)
For each iteration a minimum is found in the sub list and it is placed into the correct position in the sorted sub list
53
1 Selection sort (A)
2
3 for j = 0 |A|-2 do
4
5 Min = j
6 for k= j+1 to |A|-1
7
8 if Ak ltA[Min] then
9 Min = k
10
11 If Min ne j
12 Swap (A[j] A[Min])
13
14
C1119899
C2(119899 minus 1)
C3(119899 minus 1)
C4119899(119899 minus 1)
2
C6(119899 minus 1)
C5119899(119899 minus 1)
2
C6(119899 minus 1)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Selection Sort Analysis Summery)
Selection Sort Analysis
Best Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198626 119899 minus 1
=1198624
21198992 + 1198621 + 1198622 + 1198623 minus
1198624
2+1198626 119899 minus 1198622 + 1198623 +1198626 = Θ(1198992)
Worst Case119879 119899 = 1198621119899 + 1198622 119899minus 1 + 1198623 119899minus 1 + 1198624
119899 119899 minus 1
2+ 1198625
119899 119899 minus 1
2+ 1198626 119899minus 1 + 1198627 119899 minus 1
= (1198624
2+
1198625
2)1198992 + 1198621 +1198622 + 1198623 minus
1198624
2minus
1198625
2+ 1198626 +1198627 119899 minus 1198622 + 1198623 +1198626 + 1198627 = Θ(1198992)
54COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
10
Elementary Sorting Algorithms(Insertion Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
55
6 3 1 4 2 5
3 6 1 4 2 5
1 3 6 4 2 5
1 3 4 6 2 5
1 2 3 4 6 5
1 2 3 4 5 6
Insert 3
Insert 1
Insert 4
Insert 2
Insert 5
Elementary Sorting Algorithms(Insertion Sort)
For each iteration a element is placed into right position in sorted sub list
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
56
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1
C2
C3
C4
C5
C6
C7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
57
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Working Sublist
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
58
3 7 2 12 1 4 11 6 5 8 10
9 lt 3
9
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 3
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
59
3 7 2 12 1 4 11 6 5 8 10
9 lt 7
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
3 lt 7
7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
60
2 12 1 4 11 6 5 8 10
9 lt 2
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
7 lt 2
7
3 lt 2
3
2
982017
11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
61
2 3 7 9 12 1 4 11 6 5 8 10
9 lt 12
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 12
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
62
4 11 6 5 8 10
12 lt 1
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 1
9
7 lt 1
7
3 lt 1
3
2 lt 1
2
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
63
1 2 3 4 11 6 5 8 10
12 lt 4
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 4
9
7 lt 4
7
3 lt 4
4
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
64
1 2 3 4 7 9 11 6 5 8 10
12 lt 11
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting 11
9 lt 11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
65
1 2 3 4 6 5 8 10
12 lt 6
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 6 9 lt 6 7 lt 6 4 lt 6
1197
6
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
66
1 2 3 4 5 8 10
12 lt 5
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 5 9 lt 5 7 lt 5 6 lt 5 4 lt 5
Inserting
11976
5
982017
12
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
67
1 2 3 4 5 6 7 8 10
12 lt 8
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 8 9 lt 8 7 lt 8
Inserting
119
8
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
68
1 2 3 4 5 6 7 8 9 10
12 lt 10
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 10 9 lt 10
11
10
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
69
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Insert 2
Insert 3
Insert 4
Insert 5
Insert 6
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
70
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1(n ndash 1)
C2(n ndash 1)
C3(n ndash 1)
C4(n ndash 1)
C7(n ndash 1)
T(n) = c1n + c2(n ndash1) + c3(n ndash 1) + c4(n ndash1) + c7(n ndash1) = (c1 + c2 + c3 + c4 + c7)n - (c2 + c3 + c4 + c7)
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
71
6 5 4 3 2 1
5 6 4 3 2 1
4 5 6 3 2 1
3 4 5 6 2 1
2 3 4 5 6 1
1 2 3 4 5 6
Insert 5
Insert 4
Insert 3
Insert 2
Insert 1
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
72
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
1198621(119899 minus 1)
1198624(119899(119899 + 1)
2minus 1)
1198625(119899(119899 minus 1)
2)
1198622(119899 minus 1)
1198623(119899 minus 1)
1198626(119899(119899 minus 1)
2)
1198627(119899 minus 1)
982017
13
Elementary Sorting Algorithms(Insertion Sort Analysis Summery)
Insertion Sort Analysis
Best Case119879 119899 = 1198621 119899 minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624 119899 minus 1 + 1198627 119899 minus 1= 1198621 + 1198622 + 1198623 + 1198624 + 1198627 119899 minus 1198621 + 1198622 + 1198623 + 1198624 + 1198627 = Θ(119899)
Worst Case119879 119899
= 1198621 119899minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624119899 119899 + 1
2minus 1 + 1198625
119899 119899minus 1
2+ 1198626
119899 119899 minus 1
2+ 1198627 119899 minus 1
=1198624
2+
1198625
2+
1198626
21198992 + 1198621 + 1198622 + 1198623 +
1198624
2minus
1198625
2minus
1198626
2+ 1198627 119899 minus 1198621 + 1198622 + 1198623 +1198624 + 1198627 = Θ(1198992)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
73
Elementary Sorting Algorithms(Bubble Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
74
6 3 1 4 2 5
3 1 4 2 5 6
1 3 2 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
Elementary Sorting Algorithms(Bubble Sort)
For each iteration larger element move up (or smaller element move down)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
75
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
C1
C2
C3
C4
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
76
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
77
9 3 7 2 12 1 4 11 6 5 8 10
9 gt 3
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
78
3 9 7 2 12 1 4 11 6 5 8 10
9 gt 7
Sorted Sublist
Unsorted Sublist
982017
14
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
79
3 7 9 2 12 1 4 11 6 5 8 10
9 gt 2
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
80
3 7 2 9 12 1 4 11 6 5 8 10
9 gt 12
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
81
3 7 2 9 12 1 4 11 6 5 8 10
12 gt 1
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
82
3 7 2 9 1 12 4 11 6 5 8 10
12 gt 4
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
83
3 7 2 9 1 4 12 11 6 5 8 10
12 gt 11
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
84
3 7 2 9 1 4 11 12 6 5 8 10
12 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
15
Elementary Sorting Algorithms(Bubble Sort)
85
3 7 2 9 1 4 11 6 12 5 8 10
12 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
86
3 7 2 9 1 4 11 6 5 12 8 10
12 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
87
3 7 2 9 1 4 11 6 5 8 12 10
12 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
88
3 7 2 9 1 4 11 6 5 8 10 12
3 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
89
3 7 2 9 1 4 11 6 5 8 10 12
7 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
90
3 2 7 9 1 4 11 6 5 8 10 12
7 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
16
Elementary Sorting Algorithms(Bubble Sort)
91
3 2 7 9 1 4 11 6 5 8 10 12
9 gt 1
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
92
3 2 7 1 9 4 11 6 5 8 10 12
9 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
93
3 2 7 1 4 9 11 6 5 8 10 12
9 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
94
3 2 7 1 4 9 11 6 5 8 10 12
11 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
95
3 2 7 1 4 9 6 11 5 8 10 12
11 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
96
3 2 7 1 4 9 6 5 11 8 10 12
11 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
10
Elementary Sorting Algorithms(Insertion Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
55
6 3 1 4 2 5
3 6 1 4 2 5
1 3 6 4 2 5
1 3 4 6 2 5
1 2 3 4 6 5
1 2 3 4 5 6
Insert 3
Insert 1
Insert 4
Insert 2
Insert 5
Elementary Sorting Algorithms(Insertion Sort)
For each iteration a element is placed into right position in sorted sub list
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
56
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1
C2
C3
C4
C5
C6
C7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
57
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Working Sublist
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
58
3 7 2 12 1 4 11 6 5 8 10
9 lt 3
9
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 3
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
59
3 7 2 12 1 4 11 6 5 8 10
9 lt 7
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
3 lt 7
7
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
60
2 12 1 4 11 6 5 8 10
9 lt 2
Sorted Sublist
Unsorted Sublist
Working Sublist
9
Inserting
7 lt 2
7
3 lt 2
3
2
982017
11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
61
2 3 7 9 12 1 4 11 6 5 8 10
9 lt 12
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 12
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
62
4 11 6 5 8 10
12 lt 1
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 1
9
7 lt 1
7
3 lt 1
3
2 lt 1
2
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
63
1 2 3 4 11 6 5 8 10
12 lt 4
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 4
9
7 lt 4
7
3 lt 4
4
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
64
1 2 3 4 7 9 11 6 5 8 10
12 lt 11
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting 11
9 lt 11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
65
1 2 3 4 6 5 8 10
12 lt 6
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 6 9 lt 6 7 lt 6 4 lt 6
1197
6
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
66
1 2 3 4 5 8 10
12 lt 5
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 5 9 lt 5 7 lt 5 6 lt 5 4 lt 5
Inserting
11976
5
982017
12
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
67
1 2 3 4 5 6 7 8 10
12 lt 8
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 8 9 lt 8 7 lt 8
Inserting
119
8
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
68
1 2 3 4 5 6 7 8 9 10
12 lt 10
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 10 9 lt 10
11
10
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
69
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Insert 2
Insert 3
Insert 4
Insert 5
Insert 6
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
70
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1(n ndash 1)
C2(n ndash 1)
C3(n ndash 1)
C4(n ndash 1)
C7(n ndash 1)
T(n) = c1n + c2(n ndash1) + c3(n ndash 1) + c4(n ndash1) + c7(n ndash1) = (c1 + c2 + c3 + c4 + c7)n - (c2 + c3 + c4 + c7)
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
71
6 5 4 3 2 1
5 6 4 3 2 1
4 5 6 3 2 1
3 4 5 6 2 1
2 3 4 5 6 1
1 2 3 4 5 6
Insert 5
Insert 4
Insert 3
Insert 2
Insert 1
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
72
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
1198621(119899 minus 1)
1198624(119899(119899 + 1)
2minus 1)
1198625(119899(119899 minus 1)
2)
1198622(119899 minus 1)
1198623(119899 minus 1)
1198626(119899(119899 minus 1)
2)
1198627(119899 minus 1)
982017
13
Elementary Sorting Algorithms(Insertion Sort Analysis Summery)
Insertion Sort Analysis
Best Case119879 119899 = 1198621 119899 minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624 119899 minus 1 + 1198627 119899 minus 1= 1198621 + 1198622 + 1198623 + 1198624 + 1198627 119899 minus 1198621 + 1198622 + 1198623 + 1198624 + 1198627 = Θ(119899)
Worst Case119879 119899
= 1198621 119899minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624119899 119899 + 1
2minus 1 + 1198625
119899 119899minus 1
2+ 1198626
119899 119899 minus 1
2+ 1198627 119899 minus 1
=1198624
2+
1198625
2+
1198626
21198992 + 1198621 + 1198622 + 1198623 +
1198624
2minus
1198625
2minus
1198626
2+ 1198627 119899 minus 1198621 + 1198622 + 1198623 +1198624 + 1198627 = Θ(1198992)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
73
Elementary Sorting Algorithms(Bubble Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
74
6 3 1 4 2 5
3 1 4 2 5 6
1 3 2 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
Elementary Sorting Algorithms(Bubble Sort)
For each iteration larger element move up (or smaller element move down)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
75
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
C1
C2
C3
C4
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
76
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
77
9 3 7 2 12 1 4 11 6 5 8 10
9 gt 3
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
78
3 9 7 2 12 1 4 11 6 5 8 10
9 gt 7
Sorted Sublist
Unsorted Sublist
982017
14
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
79
3 7 9 2 12 1 4 11 6 5 8 10
9 gt 2
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
80
3 7 2 9 12 1 4 11 6 5 8 10
9 gt 12
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
81
3 7 2 9 12 1 4 11 6 5 8 10
12 gt 1
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
82
3 7 2 9 1 12 4 11 6 5 8 10
12 gt 4
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
83
3 7 2 9 1 4 12 11 6 5 8 10
12 gt 11
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
84
3 7 2 9 1 4 11 12 6 5 8 10
12 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
15
Elementary Sorting Algorithms(Bubble Sort)
85
3 7 2 9 1 4 11 6 12 5 8 10
12 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
86
3 7 2 9 1 4 11 6 5 12 8 10
12 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
87
3 7 2 9 1 4 11 6 5 8 12 10
12 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
88
3 7 2 9 1 4 11 6 5 8 10 12
3 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
89
3 7 2 9 1 4 11 6 5 8 10 12
7 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
90
3 2 7 9 1 4 11 6 5 8 10 12
7 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
16
Elementary Sorting Algorithms(Bubble Sort)
91
3 2 7 9 1 4 11 6 5 8 10 12
9 gt 1
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
92
3 2 7 1 9 4 11 6 5 8 10 12
9 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
93
3 2 7 1 4 9 11 6 5 8 10 12
9 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
94
3 2 7 1 4 9 11 6 5 8 10 12
11 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
95
3 2 7 1 4 9 6 11 5 8 10 12
11 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
96
3 2 7 1 4 9 6 5 11 8 10 12
11 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
61
2 3 7 9 12 1 4 11 6 5 8 10
9 lt 12
Sorted Sublist
Unsorted Sublist
Working Sublist
Inserting 12
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
62
4 11 6 5 8 10
12 lt 1
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 1
9
7 lt 1
7
3 lt 1
3
2 lt 1
2
1
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
63
1 2 3 4 11 6 5 8 10
12 lt 4
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
9 lt 4
9
7 lt 4
7
3 lt 4
4
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
64
1 2 3 4 7 9 11 6 5 8 10
12 lt 11
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting 11
9 lt 11
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
65
1 2 3 4 6 5 8 10
12 lt 6
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 6 9 lt 6 7 lt 6 4 lt 6
1197
6
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
66
1 2 3 4 5 8 10
12 lt 5
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 5 9 lt 5 7 lt 5 6 lt 5 4 lt 5
Inserting
11976
5
982017
12
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
67
1 2 3 4 5 6 7 8 10
12 lt 8
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 8 9 lt 8 7 lt 8
Inserting
119
8
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
68
1 2 3 4 5 6 7 8 9 10
12 lt 10
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 10 9 lt 10
11
10
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
69
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Insert 2
Insert 3
Insert 4
Insert 5
Insert 6
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
70
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1(n ndash 1)
C2(n ndash 1)
C3(n ndash 1)
C4(n ndash 1)
C7(n ndash 1)
T(n) = c1n + c2(n ndash1) + c3(n ndash 1) + c4(n ndash1) + c7(n ndash1) = (c1 + c2 + c3 + c4 + c7)n - (c2 + c3 + c4 + c7)
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
71
6 5 4 3 2 1
5 6 4 3 2 1
4 5 6 3 2 1
3 4 5 6 2 1
2 3 4 5 6 1
1 2 3 4 5 6
Insert 5
Insert 4
Insert 3
Insert 2
Insert 1
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
72
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
1198621(119899 minus 1)
1198624(119899(119899 + 1)
2minus 1)
1198625(119899(119899 minus 1)
2)
1198622(119899 minus 1)
1198623(119899 minus 1)
1198626(119899(119899 minus 1)
2)
1198627(119899 minus 1)
982017
13
Elementary Sorting Algorithms(Insertion Sort Analysis Summery)
Insertion Sort Analysis
Best Case119879 119899 = 1198621 119899 minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624 119899 minus 1 + 1198627 119899 minus 1= 1198621 + 1198622 + 1198623 + 1198624 + 1198627 119899 minus 1198621 + 1198622 + 1198623 + 1198624 + 1198627 = Θ(119899)
Worst Case119879 119899
= 1198621 119899minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624119899 119899 + 1
2minus 1 + 1198625
119899 119899minus 1
2+ 1198626
119899 119899 minus 1
2+ 1198627 119899 minus 1
=1198624
2+
1198625
2+
1198626
21198992 + 1198621 + 1198622 + 1198623 +
1198624
2minus
1198625
2minus
1198626
2+ 1198627 119899 minus 1198621 + 1198622 + 1198623 +1198624 + 1198627 = Θ(1198992)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
73
Elementary Sorting Algorithms(Bubble Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
74
6 3 1 4 2 5
3 1 4 2 5 6
1 3 2 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
Elementary Sorting Algorithms(Bubble Sort)
For each iteration larger element move up (or smaller element move down)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
75
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
C1
C2
C3
C4
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
76
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
77
9 3 7 2 12 1 4 11 6 5 8 10
9 gt 3
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
78
3 9 7 2 12 1 4 11 6 5 8 10
9 gt 7
Sorted Sublist
Unsorted Sublist
982017
14
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
79
3 7 9 2 12 1 4 11 6 5 8 10
9 gt 2
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
80
3 7 2 9 12 1 4 11 6 5 8 10
9 gt 12
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
81
3 7 2 9 12 1 4 11 6 5 8 10
12 gt 1
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
82
3 7 2 9 1 12 4 11 6 5 8 10
12 gt 4
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
83
3 7 2 9 1 4 12 11 6 5 8 10
12 gt 11
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
84
3 7 2 9 1 4 11 12 6 5 8 10
12 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
15
Elementary Sorting Algorithms(Bubble Sort)
85
3 7 2 9 1 4 11 6 12 5 8 10
12 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
86
3 7 2 9 1 4 11 6 5 12 8 10
12 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
87
3 7 2 9 1 4 11 6 5 8 12 10
12 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
88
3 7 2 9 1 4 11 6 5 8 10 12
3 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
89
3 7 2 9 1 4 11 6 5 8 10 12
7 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
90
3 2 7 9 1 4 11 6 5 8 10 12
7 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
16
Elementary Sorting Algorithms(Bubble Sort)
91
3 2 7 9 1 4 11 6 5 8 10 12
9 gt 1
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
92
3 2 7 1 9 4 11 6 5 8 10 12
9 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
93
3 2 7 1 4 9 11 6 5 8 10 12
9 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
94
3 2 7 1 4 9 11 6 5 8 10 12
11 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
95
3 2 7 1 4 9 6 11 5 8 10 12
11 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
96
3 2 7 1 4 9 6 5 11 8 10 12
11 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
12
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
67
1 2 3 4 5 6 7 8 10
12 lt 8
Sorted Sublist
Unsorted Sublist
Working Sublist
12
11 lt 8 9 lt 8 7 lt 8
Inserting
119
8
Elementary Sorting Algorithms(Insertion Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
68
1 2 3 4 5 6 7 8 9 10
12 lt 10
Sorted Sublist
Unsorted Sublist
Working Sublist
12
Inserting
11 lt 10 9 lt 10
11
10
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
69
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Insert 2
Insert 3
Insert 4
Insert 5
Insert 6
Elementary Sorting Algorithms(Insertion Sort Analysis for Best Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
70
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
C1(n ndash 1)
C2(n ndash 1)
C3(n ndash 1)
C4(n ndash 1)
C7(n ndash 1)
T(n) = c1n + c2(n ndash1) + c3(n ndash 1) + c4(n ndash1) + c7(n ndash1) = (c1 + c2 + c3 + c4 + c7)n - (c2 + c3 + c4 + c7)
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
71
6 5 4 3 2 1
5 6 4 3 2 1
4 5 6 3 2 1
3 4 5 6 2 1
2 3 4 5 6 1
1 2 3 4 5 6
Insert 5
Insert 4
Insert 3
Insert 2
Insert 1
Elementary Sorting Algorithms(Insertion Sort Analysis for Worst Case)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
72
1 Insertion sort (A)
2
3 for j = 2 to length of array A do
4
5 key = A[j]
6 i = j ndash 1
7 while i gt 0 and A[i] gtkey do
8
9 A[i +1] = A[i]
10 i = i ndash1
11
12 A[i +1] = key
13
14
1198621(119899 minus 1)
1198624(119899(119899 + 1)
2minus 1)
1198625(119899(119899 minus 1)
2)
1198622(119899 minus 1)
1198623(119899 minus 1)
1198626(119899(119899 minus 1)
2)
1198627(119899 minus 1)
982017
13
Elementary Sorting Algorithms(Insertion Sort Analysis Summery)
Insertion Sort Analysis
Best Case119879 119899 = 1198621 119899 minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624 119899 minus 1 + 1198627 119899 minus 1= 1198621 + 1198622 + 1198623 + 1198624 + 1198627 119899 minus 1198621 + 1198622 + 1198623 + 1198624 + 1198627 = Θ(119899)
Worst Case119879 119899
= 1198621 119899minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624119899 119899 + 1
2minus 1 + 1198625
119899 119899minus 1
2+ 1198626
119899 119899 minus 1
2+ 1198627 119899 minus 1
=1198624
2+
1198625
2+
1198626
21198992 + 1198621 + 1198622 + 1198623 +
1198624
2minus
1198625
2minus
1198626
2+ 1198627 119899 minus 1198621 + 1198622 + 1198623 +1198624 + 1198627 = Θ(1198992)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
73
Elementary Sorting Algorithms(Bubble Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
74
6 3 1 4 2 5
3 1 4 2 5 6
1 3 2 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
Elementary Sorting Algorithms(Bubble Sort)
For each iteration larger element move up (or smaller element move down)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
75
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
C1
C2
C3
C4
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
76
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
77
9 3 7 2 12 1 4 11 6 5 8 10
9 gt 3
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
78
3 9 7 2 12 1 4 11 6 5 8 10
9 gt 7
Sorted Sublist
Unsorted Sublist
982017
14
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
79
3 7 9 2 12 1 4 11 6 5 8 10
9 gt 2
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
80
3 7 2 9 12 1 4 11 6 5 8 10
9 gt 12
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
81
3 7 2 9 12 1 4 11 6 5 8 10
12 gt 1
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
82
3 7 2 9 1 12 4 11 6 5 8 10
12 gt 4
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
83
3 7 2 9 1 4 12 11 6 5 8 10
12 gt 11
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
84
3 7 2 9 1 4 11 12 6 5 8 10
12 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
15
Elementary Sorting Algorithms(Bubble Sort)
85
3 7 2 9 1 4 11 6 12 5 8 10
12 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
86
3 7 2 9 1 4 11 6 5 12 8 10
12 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
87
3 7 2 9 1 4 11 6 5 8 12 10
12 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
88
3 7 2 9 1 4 11 6 5 8 10 12
3 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
89
3 7 2 9 1 4 11 6 5 8 10 12
7 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
90
3 2 7 9 1 4 11 6 5 8 10 12
7 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
16
Elementary Sorting Algorithms(Bubble Sort)
91
3 2 7 9 1 4 11 6 5 8 10 12
9 gt 1
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
92
3 2 7 1 9 4 11 6 5 8 10 12
9 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
93
3 2 7 1 4 9 11 6 5 8 10 12
9 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
94
3 2 7 1 4 9 11 6 5 8 10 12
11 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
95
3 2 7 1 4 9 6 11 5 8 10 12
11 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
96
3 2 7 1 4 9 6 5 11 8 10 12
11 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
13
Elementary Sorting Algorithms(Insertion Sort Analysis Summery)
Insertion Sort Analysis
Best Case119879 119899 = 1198621 119899 minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624 119899 minus 1 + 1198627 119899 minus 1= 1198621 + 1198622 + 1198623 + 1198624 + 1198627 119899 minus 1198621 + 1198622 + 1198623 + 1198624 + 1198627 = Θ(119899)
Worst Case119879 119899
= 1198621 119899minus 1 + 1198622 119899 minus 1 + 1198623 119899 minus 1 + 1198624119899 119899 + 1
2minus 1 + 1198625
119899 119899minus 1
2+ 1198626
119899 119899 minus 1
2+ 1198627 119899 minus 1
=1198624
2+
1198625
2+
1198626
21198992 + 1198621 + 1198622 + 1198623 +
1198624
2minus
1198625
2minus
1198626
2+ 1198627 119899 minus 1198621 + 1198622 + 1198623 +1198624 + 1198627 = Θ(1198992)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
73
Elementary Sorting Algorithms(Bubble Sort)
Input A sequence of n numbers lta1 a2 a3 hellip angt
Output Permutation ltarsquo1 arsquo2 arsquo3 hellip arsquongt of input sequence such
that arsquo1 le arsquo2 le arsquo3 le hellip le arsquon
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
74
6 3 1 4 2 5
3 1 4 2 5 6
1 3 2 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
Elementary Sorting Algorithms(Bubble Sort)
For each iteration larger element move up (or smaller element move down)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
75
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
C1
C2
C3
C4
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
76
9 3 7 2 12 1 4 11 6 5 8 10
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
77
9 3 7 2 12 1 4 11 6 5 8 10
9 gt 3
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
78
3 9 7 2 12 1 4 11 6 5 8 10
9 gt 7
Sorted Sublist
Unsorted Sublist
982017
14
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
79
3 7 9 2 12 1 4 11 6 5 8 10
9 gt 2
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
80
3 7 2 9 12 1 4 11 6 5 8 10
9 gt 12
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
81
3 7 2 9 12 1 4 11 6 5 8 10
12 gt 1
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
82
3 7 2 9 1 12 4 11 6 5 8 10
12 gt 4
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
83
3 7 2 9 1 4 12 11 6 5 8 10
12 gt 11
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
84
3 7 2 9 1 4 11 12 6 5 8 10
12 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
15
Elementary Sorting Algorithms(Bubble Sort)
85
3 7 2 9 1 4 11 6 12 5 8 10
12 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
86
3 7 2 9 1 4 11 6 5 12 8 10
12 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
87
3 7 2 9 1 4 11 6 5 8 12 10
12 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
88
3 7 2 9 1 4 11 6 5 8 10 12
3 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
89
3 7 2 9 1 4 11 6 5 8 10 12
7 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
90
3 2 7 9 1 4 11 6 5 8 10 12
7 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
16
Elementary Sorting Algorithms(Bubble Sort)
91
3 2 7 9 1 4 11 6 5 8 10 12
9 gt 1
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
92
3 2 7 1 9 4 11 6 5 8 10 12
9 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
93
3 2 7 1 4 9 11 6 5 8 10 12
9 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
94
3 2 7 1 4 9 11 6 5 8 10 12
11 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
95
3 2 7 1 4 9 6 11 5 8 10 12
11 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
96
3 2 7 1 4 9 6 5 11 8 10 12
11 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
14
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
79
3 7 9 2 12 1 4 11 6 5 8 10
9 gt 2
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
80
3 7 2 9 12 1 4 11 6 5 8 10
9 gt 12
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
81
3 7 2 9 12 1 4 11 6 5 8 10
12 gt 1
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
82
3 7 2 9 1 12 4 11 6 5 8 10
12 gt 4
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
83
3 7 2 9 1 4 12 11 6 5 8 10
12 gt 11
Sorted Sublist
Unsorted Sublist
Elementary Sorting Algorithms(Bubble Sort)
84
3 7 2 9 1 4 11 12 6 5 8 10
12 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
15
Elementary Sorting Algorithms(Bubble Sort)
85
3 7 2 9 1 4 11 6 12 5 8 10
12 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
86
3 7 2 9 1 4 11 6 5 12 8 10
12 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
87
3 7 2 9 1 4 11 6 5 8 12 10
12 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
88
3 7 2 9 1 4 11 6 5 8 10 12
3 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
89
3 7 2 9 1 4 11 6 5 8 10 12
7 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
90
3 2 7 9 1 4 11 6 5 8 10 12
7 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
16
Elementary Sorting Algorithms(Bubble Sort)
91
3 2 7 9 1 4 11 6 5 8 10 12
9 gt 1
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
92
3 2 7 1 9 4 11 6 5 8 10 12
9 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
93
3 2 7 1 4 9 11 6 5 8 10 12
9 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
94
3 2 7 1 4 9 11 6 5 8 10 12
11 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
95
3 2 7 1 4 9 6 11 5 8 10 12
11 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
96
3 2 7 1 4 9 6 5 11 8 10 12
11 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
15
Elementary Sorting Algorithms(Bubble Sort)
85
3 7 2 9 1 4 11 6 12 5 8 10
12 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
86
3 7 2 9 1 4 11 6 5 12 8 10
12 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
87
3 7 2 9 1 4 11 6 5 8 12 10
12 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
88
3 7 2 9 1 4 11 6 5 8 10 12
3 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
89
3 7 2 9 1 4 11 6 5 8 10 12
7 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
90
3 2 7 9 1 4 11 6 5 8 10 12
7 gt 9
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
16
Elementary Sorting Algorithms(Bubble Sort)
91
3 2 7 9 1 4 11 6 5 8 10 12
9 gt 1
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
92
3 2 7 1 9 4 11 6 5 8 10 12
9 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
93
3 2 7 1 4 9 11 6 5 8 10 12
9 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
94
3 2 7 1 4 9 11 6 5 8 10 12
11 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
95
3 2 7 1 4 9 6 11 5 8 10 12
11 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
96
3 2 7 1 4 9 6 5 11 8 10 12
11 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
16
Elementary Sorting Algorithms(Bubble Sort)
91
3 2 7 9 1 4 11 6 5 8 10 12
9 gt 1
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
92
3 2 7 1 9 4 11 6 5 8 10 12
9 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
93
3 2 7 1 4 9 11 6 5 8 10 12
9 gt 11
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
94
3 2 7 1 4 9 11 6 5 8 10 12
11 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
95
3 2 7 1 4 9 6 11 5 8 10 12
11 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
96
3 2 7 1 4 9 6 5 11 8 10 12
11 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
17
Elementary Sorting Algorithms(Bubble Sort)
97
3 2 7 1 4 9 6 5 8 11 10 12
11 gt 10
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
98
3 2 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 2
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
99
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
100
2 3 7 1 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
101
2 3 1 7 4 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
102
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
18
Elementary Sorting Algorithms(Bubble Sort)
103
2 3 1 4 7 9 6 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
104
2 3 1 4 7 6 9 5 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
105
2 3 1 4 7 6 5 9 8 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
106
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
9 gt 10
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
107
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 3
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
108
2 3 1 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
19
Elementary Sorting Algorithms(Bubble Sort)
109
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
3 gt 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
110
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
4 gt 7
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
111
2 1 3 4 7 6 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 6
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
112
2 1 3 4 6 7 5 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 5
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
113
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
7 gt 8
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
114
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
8 gt 9
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
20
Elementary Sorting Algorithms(Bubble Sort)
115
2 1 3 4 6 5 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
2 gt 1
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
116
1 2 3 4 6 5 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
117
1 2 3 4 6 5 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
118
1 2 3 4 6 5 7 8 9 10 11 12
4 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
119
1 2 3 4 6 5 7 8 9 10 11 12
6 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
120
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
21
Elementary Sorting Algorithms(Bubble Sort)
121
1 2 3 4 5 6 7 8 9 10 11 12
7 gt 8
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
122
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
123
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
124
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
125
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
126
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
22
Elementary Sorting Algorithms(Bubble Sort)
127
1 2 3 4 5 6 7 8 9 10 11 12
6 gt 7
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
128
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
129
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
Do we need to keep going
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
130
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
131
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
132
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
23
Elementary Sorting Algorithms(Bubble Sort)
133
1 2 3 4 5 6 7 8 9 10 11 12
5 gt 6
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
134
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
135
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
136
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
137
1 2 3 4 5 6 7 8 9 10 11 12
4 gt 5
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
138
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
24
Elementary Sorting Algorithms(Bubble Sort)
139
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
140
1 2 3 4 5 6 7 8 9 10 11 12
3 gt 4
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
141
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
142
1 2 3 4 5 6 7 8 9 10 11 12
2 gt 3
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
143
1 2 3 4 5 6 7 8 9 10 11 12
1 gt 2
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort)
144
1 2 3 4 5 6 7 8 9 10 11 12
Sorted Sublist
Unsorted Sublist
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
25
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
For each iteration larger element move up (or smaller element move down)
145
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Best Case)
146
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
For each iteration larger elements move up (or smaller elements move down)
147
1 BubbleSort(A)
2
3 for j = |A|-1 down to 0 do
4
5 for k=2 to j do
6
7 If A[k-1] gt A[k]
8 Swap (A[k-1] A[k])
9
10
11
119810120783119951
119810120784(119951 minus 120783)
119810120785119951(119951 minus 120783)
120784119810120786
119951(119951 minus 120783)
120784
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis for Worst Case)
148
6 5 4 3 2 1
5 4 3 2 1 6
4 3 2 1 5 6
3 2 1 4 5 6
2 1 3 4 5 6
1 2 3 4 5 6
Bubble up
Bubble up
Bubble up
Bubble up
Bubble up
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Bubble Sort Analysis Summary)
Bubble Sort Analysis
Best Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2
=1198623
21198992 + 1198621 + 1198622 minus
1198623
2119899 minus 1198622 = Θ(1198992)
Worst Case
119879 119899 = 1198621119899 + 1198622 119899 minus 1 + 1198623119899(119899 minus 1)
2+ 1198624
119899(119899 minus 1)
2
= (1198623
2+
1198624
2)1198992 + 1198621 + 1198622 minus
1198623
2minus
1198624
2119899 minus 1198622 = Θ(1198992)
149COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
Elementary Sorting Algorithms(Shell Sort)
Shell sort is an extension of insertion sort that gains speed by facilitating exchanges of elements that are far apart
Shell sort begins with a specified decreasing sequence of gap sizes (that ends with 1) and an unsorted array For each gap size n the array is conceptually split into a group of n interleaved arrays
Insertion sort is called for each interleaved array
The process is then repeated for each gap size
150COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
982017
26
Elementary Sorting Algorithms(Shell Sort)
ShellSort (A int gaps[])
For each n in gaps
Divide the array A into n interleavings
0 n 2n 3n hellip
1 n+1 2n+1 3n+1 hellip
2 n+2 2n+2 3n+2 hellip
hellip
n-1 n+(n-1) 2n+(n-1) 3n+(n-1) hellip
Call Insertion Sort for each interleaving
151COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
152
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 10
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
153
Elementary Sorting Algorithms(Shell Sort)
9 3 7 2 12 1 4 11 6 5 8 109 3 7 2 12 1 4 11 6 5 8 106 1 4 2 9 3 7 10 12 5 8 11
n = 4
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
154
Elementary Sorting Algorithms(Shell Sort)
6 1 4 2 9 3 7 10 12 5 8 11
n = 2
4 1 6 2 7 3 8 5 9 10 12 11
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
155
Elementary Sorting Algorithms(Shell Sort)
4 1 6 2 7 3 8 5 9 10 12 11
n = 1
1 2 3 4 5 6 7 8 9 10 11 12
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park
httpswwwyoutubecomwatchv=qzXAVXddcPU
156
Elementary Sorting Algorithms(Shell Sort)
The speedup provided by shell sort is dependent on the choice of gap sizes Naturally a great deal of research has been done to find good gap sequences For examplehellip
The running time of shell sort is O(n32) for the gap increments generated by the formula (3k ndash 1)2 (not to exceed size3)
[Pratt 1971]
gaps = (1 4 13 40 121 364 1093 3280 9841 hellip)
The running time of shell sort is O(n43) for the gap increments generated by the formula 4k + 32k-1 + 1 (prefixed w 1)
[Sedgewick 1985]
gaps = (1 8 23 77 281 1073 4193 16577 hellip)
COSC 320 - Fall 2017
Slide courtesy of Dr Sang-Eon Park