vector<int> SleepSort(vector<int> &,int);
void SleepSort(vector<int> &vec)
{
vec = SleepSort(vec,0);
}
vector<int> SleepSort(vector<int> &vec,int)
{
vector<int> result;
vector<thread> threads;
for(size_t i = 0 ;i<vec.size();++i)
{
threads.push_back(thread([&vec,&result,i]()
{
int sleepTime = vec[i];
std::chrono::milliseconds time(sleepTime *100);
this_thread::sleep_for(time);
result.push_back(sleepTime);
}));
}
for(auto& thread:threads)
thread.join();
return move(result);
}
void SleepSort(vector<int> &vec)
{
vec = SleepSort(vec,0);
}
vector<int> SleepSort(vector<int> &vec,int)
{
vector<int> result;
vector<thread> threads;
for(size_t i = 0 ;i<vec.size();++i)
{
threads.push_back(thread([&vec,&result,i]()
{
int sleepTime = vec[i];
std::chrono::milliseconds time(sleepTime *100);
this_thread::sleep_for(time);
result.push_back(sleepTime);
}));
}
for(auto& thread:threads)
thread.join();
return move(result);
}