1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia...
-
date post
20-Dec-2015 -
Category
Documents
-
view
225 -
download
2
Transcript of 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia...
![Page 1: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/1.jpg)
1
C++ Plus Data Structures
Nell Dale
Chapter 10
Sorting and Searching Algorithms
Slides by Sylvia Sorkin, Community College of Baltimore County - Essex Campus
Modified by Reneta Barneva - SUNY Fredonia
![Page 2: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/2.jpg)
2
Sorting means . . .
The values stored in an array have keys of a type for which the relational operators are defined. (We also assume unique keys.)
Sorting rearranges the elements into either ascending or descending order within the array. (We’ll use ascending order.)
![Page 3: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/3.jpg)
3
Divides the array into two parts: already sorted, and not yet sorted.
On each pass, finds the smallest of the unsorted elements, and swaps it into its correct place, thereby increasing the number of sorted elements by one.
Straight Selection Sort
values [ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
36
24
10
6
12
![Page 4: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/4.jpg)
4
Selection Sort: Pass One
values [ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
36
24
10
6
12
UNSORTED
![Page 5: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/5.jpg)
5
Selection Sort: End Pass One
values [ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
6
24
10
36
12
UNSORTED
SORTED
![Page 6: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/6.jpg)
6
SORTED
Selection Sort: Pass Two
values [ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
6
24
10
36
12
UNSORTED
![Page 7: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/7.jpg)
7
Selection Sort: End Pass Two
values [ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
6
10
24
36
12
UNSORTED
SORTED
![Page 8: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/8.jpg)
8
Selection Sort: Pass Three
values [ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
6
10
24
36
12
UNSORTED
SORTED
![Page 9: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/9.jpg)
9
Selection Sort: End Pass Three
values [ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
6
10
12
36
24
SORTED
UNSORTED
![Page 10: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/10.jpg)
10
Selection Sort: Pass Four
values [ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
6
10
12
36
24
SORTED
UNSORTED
![Page 11: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/11.jpg)
11
Selection Sort: End Pass Four
values [ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
6
10
12
24
36
SORTED
![Page 12: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/12.jpg)
12
Selection Sort: How many comparisons?
values [ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
6
10
12
24
36
4 compares for values[0]
3 compares for values[1]
2 compares for values[2]
1 compare for values[3]
= 4 + 3 + 2 + 1
![Page 13: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/13.jpg)
13
For selection sort in general
The number of comparisons when the array contains N elements is
Sum = (N-1) + (N-2) + . . . + 2 + 1
![Page 14: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/14.jpg)
14
Notice that . . . Sum = (N-1) + (N-2) + . . . + 2 + 1
+ Sum = 1 + 2 + . . . + (N-2) + (N-1)
2* Sum = N + N + . . . + N + N
2 * Sum = N * (N-1)
Sum = N * (N-1)
2
![Page 15: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/15.jpg)
15
For selection sort in general
The number of comparisons when the array contains N elements is
Sum = (N-1) + (N-2) + . . . + 2 + 1
Sum = N * (N-1) /2
Sum = 0.5 N2 - 0.5 N
Sum = O(N2)
![Page 16: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/16.jpg)
template <class ItemType >int MinIndex ( ItemType values [ ] , int start , int end )
// Post: Function value = index of the smallest value in// values [start] . . values [end].{
int indexOfMin = start ;
for ( int index = start + 1 ; index <= end ; index++ )
if ( values [ index ] < values [ indexOfMin ] )
indexOfMin = index ;
return indexOfMin;
}
16
![Page 17: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/17.jpg)
template <class ItemType >void SelectionSort ( ItemType values [ ] , int numValues )
// Post: Sorts array values[0 . . numValues-1 ] into ascending // order by key{
int endIndex = numValues - 1 ;
for ( int current = 0 ; current < endIndex ; current++ )
Swap ( values [ current ] , values [ MinIndex ( values, current, endIndex ) ] ) ;
}
17
![Page 18: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/18.jpg)
18
Compares neighboring pairs of array elements, starting with the last array element, and swaps neighbors whenever they are not in correct order.
On each pass, this causes the smallest element to “bubble up” to its correct place in the array.
Bubble Sort
values [ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
36
24
10
6
12
![Page 19: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/19.jpg)
template <class ItemType >void BubbleUp ( ItemType values [ ] , int start , int end )
// Post: Neighboring elements that were out of order have been// swapped between values [start] and values [end],// beginning at values [end].{
for ( int index = end ; index > start ; index-- )
if (values [ index ] < values [ index - 1 ] )
Swap ( values [ index ], values [ index - 1 ] ) ;
}
19
![Page 20: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/20.jpg)
template <class ItemType >void BubbleSort ( ItemType values [ ] , int numValues )
// Post: Sorts array values[0 . . numValues-1 ] into ascending // order by key{
int current = 0 ;
while ( current < numValues - 1 )
BubbleUp ( values , current , numValues - 1 ) ;
current++ ;
}
20
![Page 21: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/21.jpg)
21
One by one, each as yet unsorted array element is inserted into its proper place with respect to the already sorted elements.
On each pass, this causes the number of already sorted elements to increase by one.
Insertion Sort
values [ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
36
24
10
6
12
![Page 22: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/22.jpg)
22
Works like someone who “inserts” one more card at a time into a hand of cards that are already sorted.
To insert 12, we need to make room for it by moving first 36 and then 24.
Insertion Sort
6 10 24
12
36
![Page 23: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/23.jpg)
23
6 10 24
Works like someone who “inserts” one more card at a time into a hand of cards that are already sorted.
To insert 12, we need to make room for it by moving first 36 and then 24.
Insertion Sort
36
12
![Page 24: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/24.jpg)
24
Works like someone who “inserts” one more card at a time into a hand of cards that are already sorted.
To insert 12, we need to make room for it by moving first 36 and then 24.
Insertion Sort
6 10 24 36
12
![Page 25: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/25.jpg)
25
Works like someone who “inserts” one more card at a time into a hand of cards that are already sorted.
To insert 12, we need to make room for it by moving first 36 and then 24.
Insertion Sort
6 10 12 24 36
![Page 26: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/26.jpg)
template <class ItemType >void InsertItem ( ItemType values [ ] , int start , int end )
// Post: Elements between values [start] and values [end]// have been sorted into ascending order by key.{
bool finished = false ;int current = end ;bool moreToSearch = ( current != start ) ;
while ( moreToSearch && !finished ){
if (values [ current ] < values [ current - 1 ] ) {
Swap ( values [ current ], values [ current - 1 ] ) ; current-- ; moreToSearch = ( current != start );}else finished = true ;
}
} 26
![Page 27: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/27.jpg)
template <class ItemType >void InsertionSort ( ItemType values [ ] , int numValues )
// Post: Sorts array values[0 . . numValues-1 ] into ascending // order by key{
for ( int count = 0 ; count < numValues ; count++ )
InsertItem ( values , 0 , count ) ;
}
27
![Page 28: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/28.jpg)
Sorting Algorithms and Average Case Number of Comparisons
Simple Sorts Straight Selection Sort Bubble Sort Insertion Sort
More Complex Sorts Quick Sort Merge Sort Heap Sort
O(N2)
O(N*log N)
28
![Page 29: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/29.jpg)
29
Heap Sort Approach
First, make the unsorted array into a heap by satisfying the order property. Then repeat the steps below until there are no more unsorted elements.
Take the root (maximum) element off the heap by swapping it into its correct place in the array at the end of the unsorted elements.
Reheap the remaining unsorted elements. (This puts the next-largest element into the root position).
![Page 30: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/30.jpg)
30
Swap root element into last place in unsorted array
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
70
60
12
40
30
8
10
values
70
0
60
1
40
3
30
4
12
2
8
5
root
10
6
![Page 31: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/31.jpg)
31
After swapping root element into its place
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
values
10
0
60
1
40
3
30
4
12
2
8
5
root
70
6
10
60
12
40
30
8
70 NO NEED TO CONSIDER AGAIN
![Page 32: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/32.jpg)
32
After reheaping remaining unsorted elements
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
values
60
0
40
1
10
3
30
4
12
2
8
5
root
70
6
60
40
12
10
30
8
70
![Page 33: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/33.jpg)
33
Swap root element into last place in unsorted array
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
values
60
0
40
1
10
3
30
4
12
2
8
5
root
70
6
60
40
12
10
30
8
70
![Page 34: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/34.jpg)
34
After swapping root element into its place
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
values
8
0
40
1
10
3
30
4
12
2
root
70
6
8
40
12
10
30
60
70 NO NEED TO CONSIDER AGAIN
60
5
![Page 35: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/35.jpg)
35
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
values
40
0
30
1
10
3
8
4
12
2
root
70
6
40
30
12
10
8
60
70
60
5
After reheaping remaining unsorted elements
![Page 36: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/36.jpg)
36
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
values
40
0
30
1
10
3
8
4
12
2
root
70
6
40
30
12
10
8
60
70
60
5
Swap root element into last place in unsorted array
![Page 37: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/37.jpg)
37
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
values
8
0
30
1
10
3
12
2
root
70
6
60
5
After swapping root element into its place
40
4
8
30
12
10
40
60
70 NO NEED TO CONSIDER AGAIN
![Page 38: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/38.jpg)
38
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
values
30
0
10
1
6
3
12
2
root
70
6
60
5
40
4
30
10
12
6
40
60
70
After reheaping remaining unsorted elements
![Page 39: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/39.jpg)
39
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
values
30
0
10
1
6
3
12
2
root
70
6
60
5
40
4
30
10
12
6
40
60
70
Swap root element into last place in unsorted array
![Page 40: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/40.jpg)
40
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
values
6
0
10
1
12
2
root
70
6
60
5
40
4
After swapping root element into its place
6
10
12
30
40
60
70
30
3 NO NEED TO CONSIDER AGAIN
![Page 41: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/41.jpg)
41
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
values
12
0
10
1
6
2
root
70
6
60
5
40
4
12
10
6
30
40
60
70
30
3
After reheaping remaining unsorted elements
![Page 42: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/42.jpg)
42
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
values
12
0
10
1
6
2
root
70
6
60
5
40
4
12
10
6
30
40
60
70
30
3
Swap root element into last place in unsorted array
![Page 43: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/43.jpg)
43
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
values
6
0
10
1
root
70
6
60
5
40
4
30
3
After swapping root element into its place
NO NEED TO CONSIDER AGAIN
12
2
6
10
12
30
40
60
70
![Page 44: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/44.jpg)
44
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
values
10
0
6
1
root
70
6
60
5
40
4
30
3
12
2
10
6
12
30
40
60
70
After reheaping remaining unsorted elements
![Page 45: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/45.jpg)
45
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
values
10
0
6
1
root
70
6
60
5
40
4
30
3
12
2
10
6
12
30
40
60
70
Swap root element into last place in unsorted array
![Page 46: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/46.jpg)
46
[ 0 ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
values
root
70
6
60
5
40
4
30
3
12
2
After swapping root element into its place
6
10
12
30
40
60
70
10
1
6
0
ALL ELEMENTS ARE SORTED
![Page 47: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/47.jpg)
template <class ItemType >void HeapSort ( ItemType values [ ] , int numValues )
// Post: Sorts array values[ 0 . . numValues-1 ] into ascending // order by key{
int index ; // Convert array values[ 0 . . numValues-1 ] into a heap.
for ( index = numValues/2 - 1 ; index >= 0 ; index-- )
ReheapDown ( values , index , numValues - 1 ) ;
// Sort the array.
for ( index = numValues - 1 ; index >= 1 ; index-- ){
Swap ( values [0] , values [index] );
ReheapDown ( values , 0 , index - 1 ) ;}
}
47
![Page 48: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/48.jpg)
48
template< class ItemType >void ReheapDown ( ItemType values [ ], int root, int bottom )
// Pre: root is the index of a node that may violate the heap // order property// Post: Heap order property is restored between root and bottom
{ int maxChild ; int rightChild ; int leftChild ;
leftChild = root * 2 + 1 ; rightChild = root * 2 + 2 ;
48
ReheapDown
![Page 49: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/49.jpg)
if ( leftChild <= bottom ) // ReheapDown continued {
if ( leftChild == bottom ) maxChild = leftChild;else{ if (values [ leftChild ] <= values [ rightChild ] )
maxChild = rightChild ; else
maxChild = leftChild ;}if ( values [ root ] < values [ maxChild ] ){ Swap ( values [ root ] , values [ maxChild ] ) ; ReheapDown ( maxChild, bottom ) ;}
}}
49
![Page 50: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/50.jpg)
50
Heap Sort: How many comparisons?
24
0
60
1
30
3
40
4
12
2
8
5
root
10
6
15
7
6
8
18
9
In reheap down, an elementis compared with its 2 children (and swapped with the larger). But only one element ateach level makesthis comparison,and a completebinary tree with N nodes has only O(log2N)levels. 70
10
![Page 51: 1 C++ Plus Data Structures Nell Dale Chapter 10 Sorting and Searching Algorithms Slides by Sylvia Sorkin, Community College of Baltimore County - Essex.](https://reader038.fdocuments.in/reader038/viewer/2022110322/56649d405503460f94a1ad7d/html5/thumbnails/51.jpg)
51
Heap Sort of N elements: How many comparisons?
(N/2) * O(log N) compares to create original heap
(N-1) * O(log N) compares for the sorting loop
= O ( N * log N) compares total