Sobes.tech
Back to questions
Junior — Middle
106

Опишите пример алгоритма и оцените его временную сложность.

Companies where asked
AndersenAndersen

Answer from AI

sobes.tech AI

Рассмотрим пример алгоритма сортировки массива чисел методом пузырька (Bubble Sort):

Идея: проходить по массиву, сравнивать соседние элементы и менять их местами, если они идут в неправильном порядке. Повторять проходы, пока массив не будет отсортирован.

Пример на Dart (Flutter):

void bubbleSort(List<int> arr) {
  int n = arr.length;
  for (int i = 0; i < n - 1; i++) {
    for (int j = 0; j < n - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        int temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }
}

Временная сложность этого алгоритма — O(n²), где n — количество элементов в массиве. Это связано с тем, что в худшем случае алгоритм делает примерно n проходов по массиву, и на каждом проходе сравнивает элементы почти n раз.

Такой алгоритм прост, но неэффективен для больших данных. Для более эффективной сортировки используют алгоритмы с лучшей сложностью, например, быструю сортировку (QuickSort) или сортировку слиянием (MergeSort).