Beruflich Dokumente
Kultur Dokumente
Lecture 8
2
Merge Sort - Demo
10 5 8 2 12 6 3 4
3
Merge Sort - Demo
10 5 8 2 12 6 3 4
10 5 8 2 12 6 3 4
4
Merge Sort - Demo
10 5 8 2 12 6 3 4
10 5 8 2 12 6 3 4
10 5 8 2 12 6 3 4
5
Merge Sort - Demo
10 5 8 2 12 6 3 4
10 5 8 2 12 6 3 4
10 5 8 2 12 6 3 4
10 5 8 2 12 6 3 4
6
Merge Sort - Demo
10 5 8 2 12 6 3 4
7
Merge Sort - Demo
5 10
10 5 8 2 12 6 3 4
8
Merge Sort - Demo
5 10 2 8
10 5 8 2 12 6 3 4
9
Merge Sort - Demo
5 10 2 8 6 12
10 5 8 2 12 6 3 4
10
Merge Sort - Demo
5 10 2 8 6 12 3 4
10 5 8 2 12 6 3 4
11
Merge Sort - Demo
2 5 8 10
5 10 2 8 6 12 3 4
10 5 8 2 12 6 3 4
12
Merge Sort - Demo
2 5 8 10 3 4 6 12
5 10 2 8 6 12 3 4
10 5 8 2 12 6 3 4
13
Merge Sort - Demo
2 3 4 5 6 8 10 12
2 5 8 10 3 4 6 12
5 10 2 8 6 12 3 4
10 5 8 2 12 6 3 4
14
Merge Sort - Demo
2 3 4 5 6 8 10 12
15
Merge Sort
Code
16
Merge Sort - Code
10 5 8 2 12 6 3 4
0 nElems-1
lowerBound upperBound
17
Merge Sort - Code
10 5 8 2 12 6 3 4
0 1 2 3 4 5 6 7
lowerBound upperBound
mid = (lowerBound+upperBound) / 2
18
Merge Sort - Code
10 5 8 2 12 6 3 4
0 1 2 3 4 5 6 7
10 5 8 2
0 1 2 3
19
Merge Sort - Code
10 5 8 2 12 6 3 4
0 1 2 3 4 5 6 7
10 5 8 2 12 6 3 4
0 1 2 3
4 5 6 7
2 5 8 10 3 4 6 12
0 1 2 3 4 5 6 7
20
Merge Sort - Code
} 21
}
Merge Sort - Code
workSpace
theArray 2 5 8 10 3 9 12 13
22
Merge Sort - Code
2 5 8 10 3 9 12 13
lowPtr highPtr
23
Merge Sort - Code
2 5 8 10 3 9 12 13
lowPtr highPtr
24
Merge Sort - Code
2 3
2 5 8 10 3 9 12 13
lowPtr highPtr
25
Merge Sort - Code
2 3 5
2 5 8 10 3 9 12 13
lowPtr highPtr
26
Merge Sort - Code
2 3 5 8
2 5 8 10 3 9 12 13
lowPtr highPtr
27
Merge Sort - Code
2 3 5 8 9
2 5 8 10 3 9 12 13
lowPtr highPtr
28
Merge Sort - Code
2 3 5 8 9 10
2 5 8 10 3 9 12 13
lowPtr highPtr
29
Merge Sort - Code
2 3 5 8 9 10 12
2 5 8 10 3 9 12 13
lowPtr highPtr
30
Merge Sort - Code
2 3 5 8 9 10 12 13
2 5 8 10 3 9 12 13
lowPtr highPtr
31
The merge(...) method
void merge(double workSpace[],int lowPtr,int
hightPtr,int upperBound){
32
Merge Sort - Code
2 5 8 10 3 9 12 13
} 34
}
void merge(double workSpace[],int lowPtr,int hightPtr,int upperBound){
int j = 0;
int lowerBound = lowPtr;
int mid = highPtr-1;
int n = upperBound-lowerBound+1;
10 5 8 2
10 5 8 2
10 5
5 10 8 2
2 8
2 5 8 10 12 6 3 4
12 6 3 4
12 6
6 12 3 4
3 4
3 4 6 12
36
2 3 4 5 6 8 10 12
Efficiency of Merge Sort
O (N*logN)
37