Какой алгоритм будет самым оптимальным ? На вход массив из 4 float
, а на выходе отсортированный.
Дополнение:
Есть прямоугольник, который можно вращать и прямая, выходящая из его центра. Определить какую сторону пересекает. Есть 4 критических угла( так как период два пи, а я использую единичную окружность, то максимальный угол прямой к оси X может быть 5.9999999.. пи, а вот один из критических углов больше двух пи (например третий угол, там примерно 1.2 пи, и я поверну прямоугольник на 1.5 пи, то придется отнять от критического угла 2 пи, чтобы сравнивать с прямой) Проверку хочу сделать такой
if (lineAngle > angles[3])
std::cout << "RIGHT";
else if (lineAngle > angles[2])
std::cout << "TOP";
else if (lineAngle > angles[1])
std::cout << "LEFT";
else if (lineAngle > angles[0])
std::cout << "DOWN";
void sort_swap(float&a, float& b)
{
if (b < a) ::swap(a,b);
}
sort_swap(a[0],a[1]);
sort_swap(a[2],a[3]);
sort_swap(a[0],a[2]);
sort_swap(a[1],a[3]);
sort_swap(a[1],a[2]);
Вот такой набросок на коленке. Не компилировал. Идея понятна, но для пущей эффектности можно расписать без вызовов функций, хотя, думаю, оптимизирующий компилятор и сам все сделает...
Исходя из того, что log2(4!) ~ 4.58, меньше 5 сравнений в общем случае не получится.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Нужно объявить и инициализировать unique_ptrОн должен указывать на структуру
Разбираюсь в libiio, пытаюсь написать условный Hello world модуль (упростил до одной строчки)
всем неравнодушным! Заранее благодарю за помощь или желание помочьЕсть сайт: https://lucklife-business