Bubble Sort Example 51428 15428 14528 14258 14258 14258 12458 12458 12458.
-
Upload
bruce-goodman -
Category
Documents
-
view
232 -
download
0
description
Transcript of Bubble Sort Example 51428 15428 14528 14258 14258 14258 12458 12458 12458.
Bubble Sort Example
5 1 4 2 8
1 5 4 2 8
1 4 5 2 8
1 4 2 5 8
1 4 2 5 8
1 4 2 5 8
1 2 4 5 8
1 2 4 5 8
1 2 4 5 8
Selection Sort63 25 12 22 11
63 25 12 22 11
11 25 12 22 63
void selectionSort(int[] a) { for (int i = 0; i < a.length - 1; i++) { int min = i; for (int j = i + 1; j < a.length; j++) { if (a[j] < a[min]) { min = j; } } if (i != min) { int swap = a[i]; a[i] = a[min]; a[min] = swap; } } }
11 12 25 22 63
11 12 22 25 63
i
i min
i min
i min
i, min
11 12 22 25 63i, min
Insertion SortinsertionSort(array A) begin for i := 1 to length[A] - 1 do begin value := A[ i ]; j := i - 1; while j >= 0 and A[ j ] > value do begin A[ j + 1] := A[ j ]; j := j - 1; end; A[ j + 1] := value; end; end;
63 25 12 22 11
25 63 12 22 11
12 25 63 22 11
12 22 25 63 11
11 12 22 25 63
Merge Sort – Partition Process
35 62 33 20 5 72 48 50
35 62 33 20 5 72 48 50
35 62 33 20 5 72 48 50
35 62 33 20 5 72 48 50
Merge Sort – Merge Process
35 62 33 20 5 72 48 50
40 20 10 80 60 50 7 30 100 90 70
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
Starting at the beginning of the array, we look for the first element that is greater than the pivot. (tooBigIndex)
Starting from the other end we look for the first value that is less than or euqal to the pivot. (tooSmallIndex)
After finding the two out-of-place elements, exchange them.
tooBigIndex++ tooSmallIndex—
Stop when tooBigIndex >= tooSmallIndex
tooBigIndex tooSmallIndexQuicksort
40 20 10 80 60 50 7 30 100 90 70
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
tooBigIndex tooSmallIndex
40 20 10 30 60 50 7 80 100 90 70
tooBigIndex tooSmallIndex
40 20 10 30 7 50 60 80 100 90 70
tooBigIndex
tooSmallIndex
40 20 10 30 7 50 60 80 100 90 70
tooBigIndextooSmallIndex
7 20 10 30 40 50 60 80 100 90 70
Heapsort
21
42
22
27
23
45
35
19 4 5
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
• For an element in arr[i]: Parent[(i-1)/2]– Left child [2i+1]– Right child [2i+2]
45 27 42 21 23 22 35 19 4 5[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
5 27 42 21 23 22 35 19 4 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
42 27 5 21 23 22 35 19 4 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
42 27 35 21 23 22 5 19 4 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
42 27 35 21 23 22 5 19 4 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
4 27 35 21 23 22 5 19 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
35 27 4 21 23 22 5 19 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
35 27 22 21 23 4 5 19 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
• For an element in arr[i]: Parent[(i-1)/2]– Left child [2i+1]– Right child [2i+2]
35 27 22 21 23 4 5 19 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
19 27 22 21 23 4 5 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
27 19 22 21 23 4 5 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
27 23 22 21 19 4 5 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
• For an element in arr[i]: Parent[(i-1)/2]– Left child [2i+1]– Right child [2i+2]
27 23 22 21 19 4 5 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
5 23 22 21 19 4 27 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
23 5 22 21 19 4 27 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
23 21 22 5 19 4 27 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
• For an element in arr[i]: Parent[(i-1)/2]– Left child [2i+1]– Right child [2i+2]
23 21 22 5 19 4 27 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
4 21 22 5 19 23 27 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
22 21 4 5 19 23 27 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
• For an element in arr[i]: Parent[(i-1)/2]– Left child [2i+1]– Right child [2i+2]
22 21 4 5 19 23 27 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
19 21 4 5 22 23 27 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
21 19 4 5 22 23 27 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
• For an element in arr[i]: Parent[(i-1)/2]– Left child [2i+1]– Right child [2i+2]
21 19 4 5 22 23 27 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
5 19 4 21 22 23 27 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
19 5 4 21 22 23 27 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
• For an element in arr[i]: Parent[(i-1)/2]– Left child [2i+1]– Right child [2i+2]
19 5 4 21 22 23 27 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
4 5 19 21 22 23 27 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
4 5 19 21 22 23 27 35 42 45[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
• For an element in arr[i]: Parent[(i-1)/2]– Left child [2i+1]– Right child [2i+2]