#include <iostream>
#include <random>
#include <iomanip>
#include <algorithm>
using namespace std;
int* create(size_t n);
int randomize(int a, int b);
void show(int* vec, size_t n, streamsize w);
void fill(int* vec, size_t n, int l, int r);
void sort_between(int* vec, size_t n, size_t l, size_t r);
int main() {
setlocale(LC_CTYPE, "Russian");
cout << " Введите размер массива: ";
size_t n;
cin >> n;
int* vec = nullptr;
if (vec = create(n)) {
fill(vec, n, 1, 100);
cout << "\tИсходный массив: \n";
show(vec, n, 4);
cout << "\n Введите левый индекс: ";
size_t li;
cin >> li;
cout << " Введите правый индекс: ";
size_t ri;
cin >> ri;
sort_between(vec, n, li, ri);
cout << "\tОтсортированный массив: \n";
show(vec, n, 4);
delete[] vec;
vec = nullptr;
} else cout << "\a\n\tНедостаточно ресурсов памяти! ";
cout << endl;
cin.sync();
cin.get();
}
int* create(size_t n) {
return new(nothrow) int[n];
}
int randomize(int a, int b) {
if (a > b) swap(a, b);
uniform_int_distribution<int> rand(a, b);
random_device rnd;
return rand(rnd);
}
void show(int* vec, size_t n, streamsize w) {
auto q = vec + n;
for (auto p = vec; p != q; ++p) cout << setw(w) << *p;
}
void fill(int* vec, size_t n, int l, int r) {
auto q = vec + n;
for (auto p = vec; p != q; ++p) *p = randomize(l, r);
}
void sort_between(int* vec, size_t n, size_t l, size_t r) {
if (l > r) swap(l, r);
if (l + 1 >= n) return;
if (r > n) r = n;
auto left = vec + l + 1;
auto right = vec + r;
sort(left, right);
}
если знаешшь что это обьясни
for(int i=a; ia; j--)
{
if(N[j-1]>N[j])
{
int tmp=N[j-1];
N[j-1]=N[j];
N[j]=tmp;
}
}
}
delete[] N;
?