elementary sorting algorithmsfaculty.salisbury.edu/~stlauterburg/cosc320/lectures/_fa...elementary...

26
9/8/2017 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 sublist and 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] < A[Min] then 9 Min = k 10 } 11 If Min ≠ j 12 Swap (A[j], A[Min]) 13 } 14 } C 1 C 2 C 3 C 4 C 5 C 6 C 7 Elementary Sorting Algorithms (Selection Sort) Input: A sequence of n numbers <a 1 , a 2 , a 3 , … a n > Output: Permutation <a’ 1 , a’ 2 , a’ 3 , … a’ n > of input sequence such that a’ 1 ≤ a’ 2 ≤ a’ 3 … ≤ a’ n 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]) Don’t 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 > 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 > 7 ? j Sorted Sublist Unsorted Sublist Elementary Sorting Algorithms (Selection Sort)

Upload: others

Post on 19-Jan-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 2: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 3: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 4: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 5: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 6: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 7: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 8: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 9: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 10: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 11: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 12: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 13: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 14: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 15: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 16: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 17: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 18: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 19: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 20: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 21: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 22: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 23: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 24: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 25: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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

Page 26: Elementary Sorting Algorithmsfaculty.salisbury.edu/~stlauterburg/COSC320/lectures/_fa...Elementary Sorting Algorithms COSC 320 - Fall 2017 Slide courtesy of Dr. Sang-Eon Park 1 Selection

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