#include <thread>
#include <iostream>
using namespace std;
void sort_proc(int * a, int i, int size){
for (int j = size - 1; j > i; j--)
{
// Если соседние элементы расположены
// в неправильном порядке, то меняем
// их местами
if (a[j] < a[j - 1])
{
swap (a[j], a[j - 1]);
}
}
}
int main()
{
// Считываем размер массива,
// который необходимо отсортировать
//int size;
//cin >> size;
// Динамически выделяем память под
// хранение массива размера size
//int *a = new int[size];
// Считываем массив
//for (int i = 0; i < size; i++)
//{
// cin >> a[i];
//}
int a[] = {-3, 9, 2, -6, 7, 28, 15};
int size = sizeof(a) / sizeof(a[0]);
thread ** pool = new thread* [size];
// Внешний цикл алгоритма совершает
// ровно size итераций
for (int i = 0; i < size; i++)
{
// Массив просматривается с конца до
// позиции i и "легкие элементы всплывают"
/*for (int j = size - 1; j > i; j--)
{
// Если соседние элементы расположены
// в неправильном порядке, то меняем
// их местами
if (a[j] < a[j - 1])
{
swap (a[j], a[j - 1]);
}
}*/
pool[i] = new thread(sort_proc, a, i, size);
pool[i]->join();
}
// Выводим отсортированный массив
for (int i = 0; i < size; i++)
{
cout << a[i] << ' ';
delete pool[i];
}
delete [] pool;
return 0;
}
I2luY2x1ZGUgPHRocmVhZD4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCnZvaWQgc29ydF9wcm9jKGludCAqIGEsIGludCBpLCBpbnQgc2l6ZSl7CiAgICBmb3IgKGludCBqID0gc2l6ZSAtIDE7IGogPiBpOyBqLS0pCiAgICAgICAgewogICAgICAgICAgICAvLyDQldGB0LvQuCDRgdC+0YHQtdC00L3QuNC1INGN0LvQtdC80LXQvdGC0Ysg0YDQsNGB0L/QvtC70L7QttC10L3RiwogICAgICAgICAgICAvLyDQsiDQvdC10L/RgNCw0LLQuNC70YzQvdC+0Lwg0L/QvtGA0Y/QtNC60LUsINGC0L4g0LzQtdC90Y/QtdC8CiAgICAgICAgICAgIC8vINC40YUg0LzQtdGB0YLQsNC80LgKICAgICAgICAgICAgaWYgKGFbal0gPCBhW2ogLSAxXSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc3dhcCAoYVtqXSwgYVtqIC0gMV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQp9CiAKaW50IG1haW4oKQp7CiAgICAvLyDQodGH0LjRgtGL0LLQsNC10Lwg0YDQsNC30LzQtdGAINC80LDRgdGB0LjQstCwLAogICAgLy8g0LrQvtGC0L7RgNGL0Lkg0L3QtdC+0LHRhdC+0LTQuNC80L4g0L7RgtGB0L7RgNGC0LjRgNC+0LLQsNGC0YwKICAgIC8vaW50IHNpemU7CiAgICAvL2NpbiA+PiBzaXplOwogCiAgICAvLyDQlNC40L3QsNC80LjRh9C10YHQutC4INCy0YvQtNC10LvRj9C10Lwg0L/QsNC80Y/RgtGMINC/0L7QtAogICAgLy8g0YXRgNCw0L3QtdC90LjQtSDQvNCw0YHRgdC40LLQsCDRgNCw0LfQvNC10YDQsCBzaXplCiAgICAvL2ludCAqYSA9IG5ldyBpbnRbc2l6ZV07CiAKICAgIC8vINCh0YfQuNGC0YvQstCw0LXQvCDQvNCw0YHRgdC40LIKICAgIC8vZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCiAgICAvL3sKICAgIC8vICAgIGNpbiA+PiBhW2ldOwogICAgLy99CiAKICAgIGludCBhW10gID0gey0zLCA5LCAyLCAtNiwgNywgMjgsIDE1fTsKICAgIGludCBzaXplID0gc2l6ZW9mKGEpIC8gc2l6ZW9mKGFbMF0pOwogICAgdGhyZWFkICoqIHBvb2wgPSBuZXcgdGhyZWFkKiBbc2l6ZV07CiAgICAvLyDQktC90LXRiNC90LjQuSDRhtC40LrQuyDQsNC70LPQvtGA0LjRgtC80LAg0YHQvtCy0LXRgNGI0LDQtdGCCiAgICAvLyDRgNC+0LLQvdC+IHNpemUg0LjRgtC10YDQsNGG0LjQuQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCiAgICB7CiAgICAgICAgLy8g0JzQsNGB0YHQuNCyINC/0YDQvtGB0LzQsNGC0YDQuNCy0LDQtdGC0YHRjyDRgSDQutC+0L3RhtCwINC00L4KICAgICAgICAvLyDQv9C+0LfQuNGG0LjQuCBpINC4ICLQu9C10LPQutC40LUg0Y3Qu9C10LzQtdC90YLRiyDQstGB0L/Qu9GL0LLQsNGO0YIiCiAgICAgICAgLypmb3IgKGludCBqID0gc2l6ZSAtIDE7IGogPiBpOyBqLS0pCiAgICAgICAgewogICAgICAgICAgICAvLyDQldGB0LvQuCDRgdC+0YHQtdC00L3QuNC1INGN0LvQtdC80LXQvdGC0Ysg0YDQsNGB0L/QvtC70L7QttC10L3RiwogICAgICAgICAgICAvLyDQsiDQvdC10L/RgNCw0LLQuNC70YzQvdC+0Lwg0L/QvtGA0Y/QtNC60LUsINGC0L4g0LzQtdC90Y/QtdC8CiAgICAgICAgICAgIC8vINC40YUg0LzQtdGB0YLQsNC80LgKICAgICAgICAgICAgaWYgKGFbal0gPCBhW2ogLSAxXSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc3dhcCAoYVtqXSwgYVtqIC0gMV0pOwogICAgICAgICAgICB9CiAgICAgICAgfSovCiAgICAgICAgcG9vbFtpXSA9IG5ldyB0aHJlYWQoc29ydF9wcm9jLCBhLCBpLCBzaXplKTsKICAgICAgICBwb29sW2ldLT5qb2luKCk7CiAKICAgIH0KIAogICAgLy8g0JLRi9Cy0L7QtNC40Lwg0L7RgtGB0L7RgNGC0LjRgNC+0LLQsNC90L3Ri9C5INC80LDRgdGB0LjQsgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCiAgICB7CiAgICAgICAgY291dCA8PCBhW2ldIDw8ICcgJzsKICAgICAgICBkZWxldGUgcG9vbFtpXTsKICAgIH0KIAlkZWxldGUgW10gcG9vbDsKICAgIHJldHVybiAwOwp9