Упорядочить стороны треугольника по возрастанию площади

Опубликовано: 21 Сентября, 2022

Учитывая массив arr[] сторон N треугольников, задача состоит в том, чтобы отсортировать заданные стороны треугольников в порядке возрастания площади.

Примеры:

Input: arr[] = {{5, 3, 7}, {15, 20, 4}, {4, 9, 6}, {8, 4, 5}}
Output: {{5, 3, 7}, {8, 4, 5}, {4, 9, 6}, {15, 20, 17}}
Explanation:
Following are the areas of triangle:

  • Area of 1st triangle (5, 3, 7) is 6.4.
  • Area of 2nd triangle (15, 20, 4) is 124.2.
  • Area of 3rd triangle (4, 9, 6) is 9.5.
  • Area of 4th triangle (8, 4, 5) is 8.1.

Therefore, ordering them increasing order of the area modifies the given array as 6.4 {5, 3, 7}, 8.1 {8, 4, 5}, 9.5 {4, 9, 6}, 124.2 {15, 20, 4}.

Input: arr[] = {{7, 24, 25}, {5, 12, 13}, {3, 4, 5}}
Output: {{3, 4, 5}, {5, 12, 13}, {7, 24, 25}}

Подход: заданное можно решить, сохранив стороны с площадью треугольника в другом массиве, а затем отсортировав массив в порядке возрастания сохраненной площади, а затем распечатав в результате стороны, сохраненные в другом массиве.

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O (N * log N)
Вспомогательное пространство: O(N)

Подход, оптимизированный по пространству: описанный выше подход также может быть оптимизирован с точки зрения пространства, идея состоит в том, чтобы использовать функцию компаратора для сортировки данного массива в порядке возрастания площади. Ниже приведена функция сравнения, которая используется:

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O (N * log N)
Вспомогательное пространство: O(1)