the bubble sort - clausen techobjectives • understand and use the bubble sort to sort data in a...

46
The Bubble Sort Mr. Dave Clausen La Cañada High School

Upload: others

Post on 10-Apr-2020

20 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

The Bubble Sort

Mr. Dave Clausen

La Cañada High School

Page 2: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Objectives

• Understand and use the Bubble Sort to sort

data in a program.

• Understand and know Big-O notation for

the Bubble Sort.

Mr. Dave Clausen 2

Page 3: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 3

The Bubble Sort

Algorithm

The Bubble Sort compares adjacent elements in a

list, and “swaps” them if they are not in order.

Each pair of adjacent elements is compared and

swapped until the smallest element “bubbles” to

the top. Repeat this process each time stopping

one indexed element less, until you compare only

the first (or last) two elements in the list. The

largest element will have “sunk” to the bottom.

Page 4: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 4

A Bubble Sort Example

6

5

4

3

2

1

Compare

We start by comparing the first

two elements in the List.

This list is an example of a

“worst case” scenario for the

Bubble Sort, because the List is

in the exact opposite order from

the way we want it sorted (the

computer program does not know

that it is sorted at all).

Page 5: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 5

A Bubble Sort Example

5

6

4

3

2

1

Swap

Page 6: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 6

A Bubble Sort Example

5

6

4

3

2

1

Compare

Page 7: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 7

A Bubble Sort Example

5

4

6

3

2

1

Swap

Page 8: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 8

A Bubble Sort Example

5

4

6

3

2

1

Compare

Page 9: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 9

A Bubble Sort Example

5

4

3

6

2

1

Swap

Page 10: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 10

A Bubble Sort Example

5

4

3

6

2

1

Compare

Page 11: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 11

A Bubble Sort Example

5

4

3

2

6

1

Swap

Page 12: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 12

A Bubble Sort Example

5

4

3

2

6

1Compare

Page 13: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 13

A Bubble Sort Example

5

4

3

2

1

6Swap

As you can see, the largest number

has “bubbled” down, or sunk to the

bottom of the List after the first

pass through the List.

Page 14: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 14

A Bubble Sort Example

5

4

3

2

1

6

Compare

For our second pass through

the List, we start by

comparing these first two

elements in the List.

Page 15: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 15

A Bubble Sort Example

4

5

3

2

1

6

Swap

Page 16: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 16

A Bubble Sort Example

4

5

3

2

1

6

Compare

Page 17: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 17

A Bubble Sort Example

4

3

5

2

1

6

Swap

Page 18: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 18

A Bubble Sort Example

4

3

5

2

1

6

Compare

Page 19: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 19

A Bubble Sort Example

4

3

2

5

1

6

Swap

Page 20: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 20

A Bubble Sort Example

4

3

2

5

1

6

Compare

Page 21: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 21

A Bubble Sort Example

4

3

2

1

5

6

Swap

At the end of the second pass, we

stop at element number n - 1,

because the largest element in the

List is already in the last position.

This places the second largest

element in the second to last spot.

Page 22: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 22

A Bubble Sort Example

4

3

2

1

5

6

Compare

We start with the first two

elements again at the beginning

of the third pass.

Page 23: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 23

A Bubble Sort Example

3

4

2

1

5

6

Swap

Page 24: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 24

A Bubble Sort Example

3

4

2

1

5

6

Compare

Page 25: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 25

A Bubble Sort Example

3

2

4

1

5

6

Swap

Page 26: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 26

A Bubble Sort Example

3

2

4

1

5

6

Compare

Page 27: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 27

A Bubble Sort Example

3

2

1

4

5

6

Swap

At the end of the third pass, we stop

comparing and swapping at element

number n - 2.

Page 28: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 28

A Bubble Sort Example

3

2

1

4

5

6

Compare

The beginning of the fourth pass...

Page 29: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 29

A Bubble Sort Example

2

3

1

4

5

6

Swap

Page 30: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 30

A Bubble Sort Example

2

3

1

4

5

6

Compare

Page 31: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 31

A Bubble Sort Example

2

1

3

4

5

6

Swap

The end of the fourth pass

stops at element number n - 3.

Page 32: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 32

A Bubble Sort Example

2

1

3

4

5

6

Compare

The beginning of the fifth pass...

Page 33: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 33

A Bubble Sort Example

1

2

3

4

5

6

Swap

The last pass compares only

the first two elements of the

List. After this comparison

and possible swap, the

smallest element has

“bubbled” to the top.

Page 34: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 34

What “Swapping” Means

6

5

4

3

2

1

TEMP

Place the first element into the

Temporary Variable.

6

Page 35: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 35

What “Swapping” Means

5

5

4

3

2

1

TEMP

Replace the first element with

the second element.

6

Page 36: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 36

What “Swapping” Means

5

6

4

3

2

1

TEMP

Replace the second element

with the Temporary Variable.

6

Page 37: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 37

C + + Examples of

The Bubble Sort

C++ Animation For Bubble Sort:

Here Are Some Animated Examples:

On the Net:

http://compsci.exeter.edu/Winter99/CS320/Resources/sortDemo.html

http://www.aist.go.jp/ETL/~suzaki/AlgorithmAnimation/index.html

Page 38: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 38

C++ Code for Swap Procedure

void Swap_Data (int &number1, int &number2)

{

int temp;

temp = number1;

number1 = number2;

number2 = temp;

}

Page 39: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 39

C++ Code For Bubble Sort

void Bubble_Sort (vector <int> & v)

{

int element, index;

for (element = 1; element < v.size( ); ++element)

for (index = v.size( )-1; index >= element; --index)

if ( v [index-1] > v [index])

Swap_Data ( v [index-1], v [index]);

}

Page 40: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 40

A More Efficient AlgorithmInitialize counter k to zero

Initialize boolean exchange_made to true

While (k < n - 1) and exchange_made

Set exchange_made to false

Increment counter k

For each j from 0 to n - k

If item in jth position > item in (j +

1)st position

Swap these items

Set exchange_made to true

Page 41: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 41

More Efficient C++ Source Codevoid Bubble_Sort(vector<int> &v)

{ int k = 0;

bool exchange_made = true;

while ((k < v.size() - 1) && exchange_made)

{

exchange_made = false;

++k;

for (int j = 0; j < v.size() - k; ++j)

if (v[j] > v[j + 1])

{

Swap_Data(v[j], v[j + 1]);

exchange_made = true;

}

} // Make up to n - 1 passes through vector, exit

early if no exchanges

} // are made on previous pass

Page 42: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 42

Swap_Data Helper Function

void Swap_Data (int &number1, int &number2)

{

int temp;

temp = number1;

number1 = number2;

number2 = temp;

}

// End of Swap_Data function

Page 43: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 43

Pascal Code for Swap Procedure

procedure Swap (var number1, number2: integer);

var

temp: integer;

begin

temp := number1;

number1 := number2;

number2 := temp

end; {Swap}

Page 44: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 44

Pascal Code For Bubble Sort

procedure BubbleSort (var IntArray: IntNumbers);

var

element, index: integer;

begin

for element := 1 to MaxNum do

for index := MaxNum downto (element + 1) do

if IntArray [index] < IntArray [index - 1]

then Swap (IntArray [index], IntArray [index - 1])

end; {BubbleSort}

Page 45: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 45

BASIC Code For Bubble Sort8000 REM #################

8010 REM Bubble Sort

8020 REM #################

8030 FOR ELEMENT = 1 TO MAXNUM - 1

8040 ::FOR INDEX = 1 TO MAXNUM - 1

8050 ::::::IF N (INDEX) < = N (INDEX + 1) THEN GOTO 8090

8060 ::::::TEMP = N (INDEX + 1)

8070 ::::::N (INDEX + 1) = N (INDEX)

8080 ::::::N (INDEX) = TEMP

8090 ::NEXT INDEX

8100 NEXT ELEMENT

8110 RETURN

Page 46: The Bubble Sort - Clausen TechObjectives • Understand and use the Bubble Sort to sort data in a program. • Understand and know Big-O notation for the Bubble Sort. Mr. Dave Clausen

Mr. Dave Clausen 46

Big - O Notation

Big - O notation is used to describe the efficiency

of a search or sort. The actual time necessary to

complete the sort varies according to the speed of

your system. Big - O notation is an approximate

mathematical formula to determine how many

operations are necessary to perform the search or

sort. The Big - O notation for the Bubble Sort is

O(n2), because it takes approximately n2 passes to

sort the elements.