-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMassive.h
More file actions
90 lines (76 loc) · 2.18 KB
/
Copy pathMassive.h
File metadata and controls
90 lines (76 loc) · 2.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#pragma once
#include <iostream>
using namespace std;
template <typename T>
class Massive
{
private:
size_t _size;
T* _mass;
size_t _point;
public:
Massive() {
_size = 1;
_mass = new T[_size];
_point = 0;
};
Massive(int size) {
_size = size;
_mass = new T[_size];
_point = 0;
};
void Print() {
for (int i = 0; i<_size; i++) {
std::cout << "Number: " << i+1 << " | Value: " << _mass[i] << std::endl;
}
std::cout << "Minimum: " << _mass[0] << " | Maximum: " << _mass[_point - 1] << std::endl;
}
bool find(T el) {
int left = 0;
int right = _size;
int middle;
while (left <= right) {
middle = (left + right) / 2;
if (_mass[middle] == el) return true;
if (_mass[middle] > el) right = middle - 1;
else left = middle + 1;
}
return false;
}
void append(T el) {
if (_point < _size) {
_mass[_point] = el;
for (int i = _point; i > 0; i--) {
if (_mass[i-1] > _mass[i] ) {
swap(_mass[i], _mass[i-1]);
} else {
break;
}
}
_point++;
} else {
T* mass = new T[_size*2];
mass[_size] = el;
for (int i = 0; i < _size; i++) {
mass[i] = _mass[i];
}
delete _mass;
_mass = mass;
_size*=2;
for (int i = _point; i > 0; i--) {
if (_mass[i-1] > _mass[i] ) {
swap(_mass[i], _mass[i-1]);
} else {
break;
}
}
_point++;
}
}
int min() {
return _mass[0];
}
int max() {
return _mass[_point-1];
}
};