Download presentation
Presentation is loading. Please wait.
1
© Ronaldo Menezes, Florida Tech
Brute Force Brute force is a straightforward approach to solving a problem usually directly based on the problem's statement and on the definitions of the concepts involved [Levitin 2003] It is considered a design strategy although the strategy is simply: just do something that works! As an example consider the exponentiation problem Compute an for a given number a and a nonnegative integer n. The brute force approach consists of: Can you calculate an using less then (n-1) multiplications? What is the fundamental operation in problem? The multiplication. Take for instance a8, it would take 7 multiplications. But if we write f(x) = x * x, we could do f(f(f(x))) and perform only 3 multiplications. © Ronaldo Menezes, Florida Tech
2
© Ronaldo Menezes, Florida Tech
Uses of Brute Force The brute force design technique rarely yields efficient algorithms. But it does have a few advantages: Brute force algorithms are normally more general. In fact it is normally difficult to point out problems that a brute-force approach cannot tackle. Most elementary algorithmic tasks use brute force solutions. e.g. Calculating the sum of a list of numbers; finding the max element in a list. The solutions are normally reasonable for practical instances sizes. A simple (correct) solution may serve as the basis for testing more sophisticated solutions. as a yardstick with which to judge more efficient alternatives for solving the problem – a benchmark. © Ronaldo Menezes, Florida Tech
3
Sequential Search (Another example of Brute-Force)
The algorithm below is an excellent illustration of a brute force approach It is simple (it's strength) It is not efficient (it's weakness) SequentialSearch(A[0..n],K) A[n] = K i = 0 while (A[i] != K) do i = i + 1 if (i < n) return i else return -1 © Ronaldo Menezes, Florida Tech
4
© Ronaldo Menezes, Florida Tech
String Matching This problem is very common and is even implemented in Java's String class as a function called indexOf(String s) The problem is: given a string of n characters called text and another of m characters (m<=n) called pattern, find a substring of text that matches the pattern. More precisely, we want to find i – the index of the leftmost character of the first matching substring in the text © Ronaldo Menezes, Florida Tech
5
String Matching Example
N O B O D Y _ N O T I C E D _ H I M N O T Write the algorithm as an exercise © Ronaldo Menezes, Florida Tech
6
General Description of the Algorithm
Step 1 Align pattern at beginning of text Step 2 Moving from left to right, compare each character of pattern to the corresponding character in text until all characters are found to match (successful search); or a mismatch is detected Step 3 While pattern is not found and the text is not yet exhausted, realign pattern one position to the right and repeat Step 2 © Ronaldo Menezes, Florida Tech
7
String Matching Brute-Force Algorithm
BruteForceStringMatch(T[0..n-1],P[0..m-1]) for i = 0 to n – m do j = 0 while (j < m) and (P[j] = T[i+j]) do j = j + 1 if (j = m) return i return -1 © Ronaldo Menezes, Florida Tech
8
© Ronaldo Menezes, Florida Tech
Brute Force for the TSP The Travelling Salesman Problem consists of finding a cycle in a graph, which passes through all nodes and whose sum of the weights of the edges is minimum amongst all possible cycles in the graph A cycle that all nodes in a graph only once is called a Hamiltonian Cycle 1. List all possible Hamiltonian Cycles 2. Find the weight for each of these cycles 3. Chose the one with the minimum total weight Benefits: it always finds the solution Drawbacks: it is only practical in small graphs. In a reasonable machine it takes approximately graph with 10 nodes. 20 seconds graph with 15 nodes. 50 days graph with 16 nodes. 2 years graph with 20 nodes. 193,000 years © Ronaldo Menezes, Florida Tech
9
The Assignment Problem
There are n people who need to be assigned to n jobs, one person per job. The cost of assigning person i to job j is C[i,j]. Find an assignment that minimizes the total cost. Job 0 Job 1 Job 2 Job 3 Person Person Person Person What is the algorithmic plan (brute-force) Generate all legitimate assignments, compute their costs, and select the cheapest one. How many assignments are there? n! © Ronaldo Menezes, Florida Tech
10
The Assignment Problem
C = Assignment (col.#s) Total Cost 1, 2, 3, =18 1, 2, 4, =30 1, 3, 2, =24 1, 3, 4, =26 1, 4, 2, =33 1, 4, 3, =23 etc. For this particular instance, the optimal assignment is: 2,1,3,4 © Ronaldo Menezes, Florida Tech
11
Sorting Consider a sequence S = {s1,s2,s3,...,sn} composed of n>=0 elements drawn from a universe U The goal of sorting is to rearrange the elements of S and produce another sequence S' such that elements of S appear in order What does it mean to say "in order"? Given a relation, say < It has to be a total order For all pairs of elements (i,j), exact one of the following is true: i<j, i=j, j<i (elements are comparable) For all triples (i,j,k), i<j ^ j<k <=> i<k (relation is transitive)
12
Sorting Algorithms Sorting is a very common operation.
We're used to the idea of having things ordered in some intelligent way Computer applications are often given unordered set of elements which need to be processed When structures are sorted, the processing time is normally improved because we can make assumptions about the organization of the data Imagine if you had a book whose index (on the back) was not in alphabetical order! Would you try to find the owner of phone number in a phone book if you're given only the number? There are several solutions that can be used to sort structures Different performance Different properties
13
Stable vs. Non-Stable Sorts
We frequently use sorting methods for items with multiple keys Sometimes we need to apply the sorting with different keys For instance we want to sort a list of people based on first name and than on age So Black age 30 should appear before Jones age 30 If we sort a list based on the first key (name) and then apply a sort based on the second key (age) how can we guarantee that the list is still ordered based on the first key? Definition: A sorting method is said the be stable if it preserves the relative order of the items with duplicated keys on the list © Ronaldo Menezes, Florida Tech
14
An Example of a Stable Sort (adapted from Sedgewick)
Adams (30) Washington (23) Wilson (50) Black (23) Brown (40) Smith (30) Thompson (40) Jackson (23) White (50) Jones (50) Adams (30) Black (23) Brown (40) Jackson (23) Jones (50) Smith (30) Thompson (40) Washington (23) White (50) Wilson (50) SORT BY NAME Black (23) Jackson (23) Washington (23) Adams (30) Smith (30) Brown (40) Thompson (40) Jones (50) White (50) Wilson (50) SORT BY AGE
15
Why is Stability Important?
Stable algorithms tend to be more efficient in practice If two keys don’t need to be swapped they aren’t Stable algorithms are, in general, easier to be parallelized More importantly they allow multi-key sort to be easily implemented by combining multiple runs the sorting algorithm.
16
Selection Sort As the name suggests, selection sort orders a list of elements by finding the index of the maximum element (selecting the element) and putting it in its place in the list What can we say about selection sort? It is a simple algorithm it is inefficient for large values of n, where n is the size of the list. Can be easily implemented on linked lists.
17
Selection Sort Algorithm
void selectionSort(int list[]) { int last = list.length; int maxPos; while (last > 0) { // INV: list[last-1] ... list[list.length-1] is sorted && // everything in list[0] ... list[last] <= // everything in list[last+1] ... last[list.length-1] maxPos = findMax(list,last+1); swap(list,maxPos,last); last--; } © Ronaldo Menezes, Florida Tech
18
© Ronaldo Menezes, Florida Tech
View of Selection Sort 12 4 7 6 1 21 2 9 last(7) © Ronaldo Menezes, Florida Tech
19
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(5) 12 4 7 6 1 21 2 9 last(7) © Ronaldo Menezes, Florida Tech
20
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(5) 12 4 7 6 1 9 2 21 last(7) © Ronaldo Menezes, Florida Tech
21
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(5) 12 4 7 6 1 9 2 21 last(6) © Ronaldo Menezes, Florida Tech
22
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(0) 12 4 7 6 1 9 2 21 last(6) © Ronaldo Menezes, Florida Tech
23
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(0) 2 4 7 6 1 9 12 21 last(6) © Ronaldo Menezes, Florida Tech
24
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(0) 2 4 7 6 1 9 12 21 last(5) © Ronaldo Menezes, Florida Tech
25
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(5) 2 4 7 6 1 9 12 21 last(5) © Ronaldo Menezes, Florida Tech
26
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(5) 2 4 7 6 1 9 12 21 last(5) © Ronaldo Menezes, Florida Tech
27
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(5) 2 4 7 6 1 9 12 21 last(4) © Ronaldo Menezes, Florida Tech
28
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(2) 2 4 7 6 1 9 12 21 last(4) © Ronaldo Menezes, Florida Tech
29
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(2) 2 4 1 6 7 9 12 21 last(4) © Ronaldo Menezes, Florida Tech
30
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(2) 2 4 1 6 7 9 12 21 last(3) © Ronaldo Menezes, Florida Tech
31
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(3) 2 4 1 6 7 9 12 21 last(3) © Ronaldo Menezes, Florida Tech
32
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(3) 2 4 1 6 7 9 12 21 last(3) © Ronaldo Menezes, Florida Tech
33
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(3) 2 4 1 6 7 9 12 21 last(2) © Ronaldo Menezes, Florida Tech
34
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(1) 2 4 1 6 7 9 12 21 last(2) © Ronaldo Menezes, Florida Tech
35
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(1) 2 1 4 6 7 9 12 21 last(2) © Ronaldo Menezes, Florida Tech
36
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(1) 2 1 4 6 7 9 12 21 last(1) © Ronaldo Menezes, Florida Tech
37
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(0) 2 1 4 6 7 9 12 21 last(1) © Ronaldo Menezes, Florida Tech
38
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(0) 1 2 4 6 7 9 12 21 last(1) © Ronaldo Menezes, Florida Tech
39
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(0) 1 2 4 6 7 9 12 21 last(0) © Ronaldo Menezes, Florida Tech
40
© Ronaldo Menezes, Florida Tech
View of Selection Sort maxPos(0) 1 2 4 6 7 9 12 21 last(0) © Ronaldo Menezes, Florida Tech
41
Worst Case of Selection Sort
The main loop is executed n-1 times, where n is the size of the array Inside the loop the only operation that does not have constant time is the findMax function that requires n-1 comparisons to find the maximum value in the list The first time findMax is called the list length is n, the second time the list length is n-1, and so forth Thus the number of steps of Selection Sort is given by: © Ronaldo Menezes, Florida Tech
42
Is Selection Sort Stable?
Try this example at home Sort by name and then by age Adams (30) Washington (23) Wilson (50) Black (23) Brown (40) Smith (30) Thompson (40) Jackson (23) White (50) Jones (50) © Ronaldo Menezes, Florida Tech
43
© Ronaldo Menezes, Florida Tech
Insertion Sort The idea here is that we get an element and insert it in the position it belongs. To do this we may to have to shift some elements to open space. Used frequently when we want to generate another list with the elements sorted. That is, keep the original list and generate a new one. It can be also done in place, that is, without requiring an extra list © Ronaldo Menezes, Florida Tech
44
Insertion Sort Algorithm
void insertionSort(int list[]) { int pos = list.length-1; while (pos > 0) { indexNew = pos – 1; valueNew = list[indexNew]; while ((indexNew < list.length-1) && (valueNew > list[indexNew+1])) { list[indexNew] = list[indexNew+1]; indexNew++; } list[indexNew] = valueNew; pos--; © Ronaldo Menezes, Florida Tech
45
View of Insertion Sort valueNew 2 indexNew 12 4 6 7 1 21 2 9 pos
46
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 2 indexNew 12 4 6 7 1 21 2 9 pos © Ronaldo Menezes, Florida Tech
47
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 12 4 6 7 1 21 2 9 pos © Ronaldo Menezes, Florida Tech
48
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 12 4 6 7 1 2 2 9 pos © Ronaldo Menezes, Florida Tech
49
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 12 4 6 7 1 2 2 9 pos © Ronaldo Menezes, Florida Tech
50
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 12 4 6 7 1 2 9 9 pos © Ronaldo Menezes, Florida Tech
51
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 12 4 6 7 1 2 9 9 pos © Ronaldo Menezes, Florida Tech
52
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 12 4 6 7 1 2 9 21 pos © Ronaldo Menezes, Florida Tech
53
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 1 indexNew 12 4 6 7 1 2 9 21 pos © Ronaldo Menezes, Florida Tech
54
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 7 indexNew 12 4 6 7 1 2 9 21 pos © Ronaldo Menezes, Florida Tech
55
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 7 indexNew 12 4 6 1 1 2 9 21 pos © Ronaldo Menezes, Florida Tech
56
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 7 indexNew 12 4 6 1 1 2 9 21 pos © Ronaldo Menezes, Florida Tech
57
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 7 indexNew 12 4 6 1 2 2 9 21 pos © Ronaldo Menezes, Florida Tech
58
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 7 indexNew 12 4 6 1 2 2 9 21 pos © Ronaldo Menezes, Florida Tech
59
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 7 indexNew 12 4 6 1 2 7 9 21 pos © Ronaldo Menezes, Florida Tech
60
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 6 indexNew 12 4 6 1 2 7 9 21 pos © Ronaldo Menezes, Florida Tech
61
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 6 indexNew 12 4 1 1 2 7 9 21 pos © Ronaldo Menezes, Florida Tech
62
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 6 indexNew 12 4 1 1 2 7 9 21 pos © Ronaldo Menezes, Florida Tech
63
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 6 indexNew 12 4 1 2 2 7 9 21 pos © Ronaldo Menezes, Florida Tech
64
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 6 indexNew 12 4 1 2 2 7 9 21 pos © Ronaldo Menezes, Florida Tech
65
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 6 indexNew 12 4 1 2 6 7 9 21 pos © Ronaldo Menezes, Florida Tech
66
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 4 indexNew 12 4 1 2 6 7 9 21 pos © Ronaldo Menezes, Florida Tech
67
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 4 indexNew 12 1 1 2 6 7 9 21 pos © Ronaldo Menezes, Florida Tech
68
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 4 indexNew 12 1 1 2 6 7 9 21 pos © Ronaldo Menezes, Florida Tech
69
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 4 indexNew 12 1 2 2 6 7 9 21 pos © Ronaldo Menezes, Florida Tech
70
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 4 indexNew 12 1 2 2 6 7 9 21 pos © Ronaldo Menezes, Florida Tech
71
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew 4 indexNew 12 1 2 4 6 7 9 21 pos © Ronaldo Menezes, Florida Tech
72
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 12 1 2 4 6 7 9 21 pos © Ronaldo Menezes, Florida Tech
73
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 1 1 2 4 6 7 9 21 pos © Ronaldo Menezes, Florida Tech
74
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 1 1 2 4 6 7 9 21 pos © Ronaldo Menezes, Florida Tech
75
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 1 2 2 4 6 7 9 21 pos © Ronaldo Menezes, Florida Tech
76
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 1 2 2 4 6 7 9 21 pos © Ronaldo Menezes, Florida Tech
77
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 1 2 4 4 6 7 9 21 pos © Ronaldo Menezes, Florida Tech
78
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 1 2 4 4 6 7 9 21 pos © Ronaldo Menezes, Florida Tech
79
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 1 2 4 6 6 7 9 21 pos © Ronaldo Menezes, Florida Tech
80
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 1 2 4 6 6 7 9 21 pos © Ronaldo Menezes, Florida Tech
81
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 1 2 4 6 7 7 9 21 pos © Ronaldo Menezes, Florida Tech
82
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 1 2 4 6 7 7 9 21 pos © Ronaldo Menezes, Florida Tech
83
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 1 2 4 6 7 9 9 21 pos © Ronaldo Menezes, Florida Tech
84
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 1 2 4 6 7 9 9 21 pos © Ronaldo Menezes, Florida Tech
85
© Ronaldo Menezes, Florida Tech
View of Insertion Sort valueNew indexNew 1 2 4 6 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
86
© Ronaldo Menezes, Florida Tech
View of Insertion Sort 1 2 4 6 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
87
Analysis of Insertion Sort (Worst Case)
The main loop is executed n-1 times This means that the inner loop will be called n-1 times The number of steps performed in the inner loop depends on the on the value of indexNew It also depends of the value stored in indexNew, but if you're unlucky the value is greater than all the others on the right-hand side of the list, the inner loop will perform 1 comparison, then 2,...,(n-1) Again based on the same formula, Insertion Sort give us: Is Insertion Sort stable? © Ronaldo Menezes, Florida Tech
88
© Ronaldo Menezes, Florida Tech
Bubble Sort Bubble sort is one of the simplest algorithms for sorting a list but also one of the slowest. Theoretically speaking it has the same efficiency of selection sort Bubble sort maintains the invariant that After each outer loop interaction one element in the list has been placed in his final location Same invariant as selection sort Bubble sort solution is not obvious Today it is obvious to CS students given that it is covered in most books. Unlikely to be the algorithm of choice for someone without algorithmic knowledge © Ronaldo Menezes, Florida Tech
89
© Ronaldo Menezes, Florida Tech
Bubble Sort Algorithm void bubbleSort(int list[]) { // PRE: list is an array indexed // from list[0] to list[n-1] for (int i = list.length-1; i>0; i--){ for (int pos = 0; pos < i; pos++) { if (list[pos] > list[pos+1]) { swap(list,pos,pos+1); } © Ronaldo Menezes, Florida Tech
90
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 12 4 6 7 1 21 2 9 pos © Ronaldo Menezes, Florida Tech
91
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 12 6 7 1 21 2 9 pos © Ronaldo Menezes, Florida Tech
92
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 12 6 7 1 21 2 9 pos © Ronaldo Menezes, Florida Tech
93
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 12 7 1 21 2 9 pos © Ronaldo Menezes, Florida Tech
94
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 12 7 1 21 2 9 pos © Ronaldo Menezes, Florida Tech
95
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 4 4 6 6 6 7 12 1 21 2 9 pos © Ronaldo Menezes, Florida Tech
96
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 7 12 1 21 2 9 pos © Ronaldo Menezes, Florida Tech
97
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 7 1 12 21 2 9 pos © Ronaldo Menezes, Florida Tech
98
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 7 1 12 21 2 9 pos © Ronaldo Menezes, Florida Tech
99
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 7 1 12 21 2 9 pos © Ronaldo Menezes, Florida Tech
100
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 7 1 12 2 21 9 pos © Ronaldo Menezes, Florida Tech
101
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 7 1 12 2 21 9 pos © Ronaldo Menezes, Florida Tech
102
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 7 1 12 2 9 21 pos © Ronaldo Menezes, Florida Tech
103
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 7 1 12 2 9 21 pos © Ronaldo Menezes, Florida Tech
104
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 7 1 12 2 9 21 pos © Ronaldo Menezes, Florida Tech
105
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 7 1 12 2 9 21 pos © Ronaldo Menezes, Florida Tech
106
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 1 7 12 2 9 21 pos © Ronaldo Menezes, Florida Tech
107
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 1 7 12 2 9 21 pos © Ronaldo Menezes, Florida Tech
108
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 1 7 12 2 9 21 pos © Ronaldo Menezes, Florida Tech
109
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 1 7 2 12 9 21 pos © Ronaldo Menezes, Florida Tech
110
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 1 7 2 12 9 21 pos © Ronaldo Menezes, Florida Tech
111
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 1 7 2 9 12 21 pos © Ronaldo Menezes, Florida Tech
112
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 1 7 2 9 12 21 pos © Ronaldo Menezes, Florida Tech
113
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 6 1 7 2 9 12 21 pos © Ronaldo Menezes, Florida Tech
114
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 1 6 7 2 9 12 21 pos © Ronaldo Menezes, Florida Tech
115
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 1 6 7 2 9 12 21 pos © Ronaldo Menezes, Florida Tech
116
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 1 6 7 2 9 12 21 pos © Ronaldo Menezes, Florida Tech
117
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 1 6 2 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
118
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 1 6 2 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
119
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 4 1 6 2 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
120
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 1 4 6 2 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
121
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 1 4 6 2 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
122
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 1 4 6 2 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
123
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 1 4 2 6 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
124
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 1 4 2 6 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
125
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 1 4 2 6 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
126
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 1 4 2 6 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
127
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 1 2 4 6 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
128
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 1 2 4 6 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
129
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 1 2 4 6 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
130
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 1 2 4 6 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
131
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 1 2 4 6 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
132
© Ronaldo Menezes, Florida Tech
View of Bubble Sort pos+1 1 2 4 6 7 9 12 21 pos © Ronaldo Menezes, Florida Tech
133
Analysis of Bubble Sort (Worst Case)
The main loop is executed n-1 times This means that the inner loop will be called n-1 times The number of times the swap is performed depend on the on the value of i which starts with n-1 and goes to 1 Thus the number of comparisons of Bubble Sort is also: Is Bubble Sort stable? © Ronaldo Menezes, Florida Tech
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.