random_device rd;
mt19937 eng(rd());
uniform_int_distribution<int> dist(1, 10);
int n;
int x;
cin >> n >> x;
vector<int> a(n);
for (auto& i : a)
i = dist(eng);
copy(a.cbegin(), a.cend(), ostream_iterator<int>(cout, " "));
cout << '\n';
sort(a.begin(), a.end());
copy(a.cbegin(), a.cend(), ostream_iterator<int>(cout, " "));
cout << '\n';
if (binary_search(a.cbegin(), a.cend(), x)) {
cout << x << " found";
} else {
set<int> temp(a.cbegin(), a.cend());
if (x < *temp.cbegin()) {
cout << *temp.cbegin();
} else if (x > *prev(temp.cend())) {
cout << *prev(temp.cend());
} else {
auto f = lower_bound(a.cbegin(), a.cend(), x);
auto s = upper_bound(a.cbegin(), a.cend(), x);
if (f != a.cend() && s != a.cend()) {
if (abs(*f - x) < abs(*s - x)) {
cout << *f;
} else {
cout << *s;
}
} else if (f == a.cend() && s != a.cend()) {
cout << *s;
} else if (f != a.cend() && s == a.cend()) {
cout << *f;
}
}
}
'массив и диапазон для примера
m = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
i1 = 2 'с 3-го злемента (0,1,2)
i2 = 7 'по восьмой
'собственно, сам алгоритм
For x = i1 To i2 - 1
For y = x + 1 To i2
If m(x) < m(y) Then tmp = m(x): m(x) = m(y): m(y) = tmp
Next y, x
MsgBox Join(m, ";") 'это просто проверка
End Sub
Надеюсь