#include <iostream>
#include <ctime>
#include <cstdlib>
#include <list>
void Merge(std::list<int> & l, std::list<int>::iterator begin, std::list<int>::iterator mid, std::list<int>::iterator end)
{
auto temp_mid = mid;
auto temp_end = end++;
while (begin != mid && temp_mid != temp_end)
{
if (*begin < *temp_mid)
{
l.push_front(*begin);
begin = l.erase(begin);
}
else
{
l.push_front(*temp_mid);
temp_mid = l.erase(temp_mid);
}
}
while (begin != mid)
{
l.push_front(*begin);
begin = l.erase(begin);
}
while (temp_mid != temp_end)
{
l.push_front(*temp_mid);
temp_mid=l.erase(temp_mid);
}
}
std::list<int>::iterator getMid(std::list<int>::iterator begin, std::list<int>::iterator end)
{
auto mid = begin;
while (begin != end)
{
begin++;
if (begin != end)
{
begin++;
}
else
{
break;
}
mid++;
}
return mid;
}
void MergeSort(std::list<int> & l, std::list<int>::iterator begin, std::list<int>::iterator end)
{
//auto temp_end = end++;
if (begin != end)
{
auto mid = getMid(begin, end);
MergeSort(l, begin, mid);
MergeSort(l, mid, end);
Merge(l, begin, mid, end);
}
}
int main()
{
int n,x;
std::list<int> l;
srand(time(NULL));
std::cout << "n = ";
std::cin >> n;
for (int i = 0; i < n; i++)
{
l.push_back(rand() % 100);
}
for (auto iter = l.begin(); iter != l.end(); iter++)
{
std::cout << *iter << " ";
}
std::cout << std::endl;
MergeSort(l, l.begin(), --(l.end()));
for (auto iter = l.begin(); iter != l.end(); iter++)
{
std::cout << *iter << " ";
}
std::cin >> x;
return 0;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Ребята, помогите написать перегруженную функцию, которая принимает на вход произвольный Callable объект:
Работаю в visual studioНашел библиотеку с большими числами:bigint, но не понимаю как ее правильно подключить и использовать