9
9
10
10
// Iterative Version
11
11
12
- void CocktailSelectionSort (std::vector<int > & vec, int low, int high) {
12
+ void CocktailSelectionSort (std::vector<int > * vec, int low, int high) {
13
13
while (low <= high) {
14
- int minimum = vec[low];
14
+ int minimum = (* vec) [low];
15
15
int minimumindex = low;
16
- int maximum = vec[high];
16
+ int maximum = (* vec) [high];
17
17
int maximumindex = high;
18
18
19
19
for (int i = low; i <= high; i++) {
20
- if (vec[i] >= maximum) {
21
- maximum = vec[i];
20
+ if ((* vec) [i] >= maximum) {
21
+ maximum = (* vec) [i];
22
22
maximumindex = i;
23
23
}
24
- if (vec[i] <= minimum) {
25
- minimum = vec[i];
24
+ if ((* vec) [i] <= minimum) {
25
+ minimum = (* vec) [i];
26
26
minimumindex = i;
27
27
}
28
28
}
29
29
if (low != maximumindex || high != minimumindex) {
30
- std::swap (vec[low], vec[minimumindex]);
31
- std::swap (vec[high], vec[maximumindex]);
30
+ std::swap ((* vec) [low], (* vec) [minimumindex]);
31
+ std::swap ((* vec) [high], (* vec) [maximumindex]);
32
32
} else {
33
- std::swap (vec[low], vec[high]);
33
+ std::swap ((* vec) [low], (* vec) [high]);
34
34
}
35
35
36
36
low++;
@@ -40,29 +40,29 @@ void CocktailSelectionSort(std::vector<int> &vec, int low, int high) {
40
40
41
41
// Recursive Version
42
42
43
- void CocktailSelectionSort_v2 (std::vector<int > & vec, int low, int high) {
43
+ void CocktailSelectionSort_v2 (std::vector<int > * vec, int low, int high) {
44
44
if (low >= high) return ;
45
45
46
- int minimum = vec[low];
46
+ int minimum = (* vec) [low];
47
47
int minimumindex = low;
48
- int maximum = vec[high];
48
+ int maximum = (* vec) [high];
49
49
int maximumindex = high;
50
50
51
51
for (int i = low; i <= high; i++) {
52
- if (vec[i] >= maximum) {
53
- maximum = vec[i];
52
+ if ((* vec) [i] >= maximum) {
53
+ maximum = (* vec) [i];
54
54
maximumindex = i;
55
55
}
56
- if (vec[i] <= minimum) {
57
- minimum = vec[i];
56
+ if ((* vec) [i] <= minimum) {
57
+ minimum = (* vec) [i];
58
58
minimumindex = i;
59
59
}
60
60
}
61
61
if (low != maximumindex || high != minimumindex) {
62
- std::swap (vec[low], vec[minimumindex]);
63
- std::swap (vec[high], vec[maximumindex]);
62
+ std::swap ((* vec) [low], (* vec) [minimumindex]);
63
+ std::swap ((* vec) [high], (* vec) [maximumindex]);
64
64
} else {
65
- std::swap (vec[low], vec[high]);
65
+ std::swap ((* vec) [low], (* vec) [high]);
66
66
}
67
67
68
68
CocktailSelectionSort (vec, low + 1 , high - 1 );
@@ -85,9 +85,9 @@ int main() {
85
85
std::cin >> method;
86
86
87
87
if (method == 0 ) {
88
- CocktailSelectionSort (v, 0 , n - 1 );
88
+ CocktailSelectionSort (& v, 0 , n - 1 );
89
89
} else if (method == 1 ) {
90
- CocktailSelectionSort_v2 (v, 0 , n - 1 );
90
+ CocktailSelectionSort_v2 (& v, 0 , n - 1 );
91
91
} else {
92
92
std::cerr << " Unknown method" << std::endl;
93
93
return -1 ;
0 commit comments