В этой статье блога мы погрузимся в мир алгоритмов сортировки и изучим алгоритм сортировки вставками с использованием языка программирования Dart. Мы обсудим концепцию сортировки вставками, приведем примеры кода и проанализируем ее эффективность. Итак, начнем!
Что такое сортировка вставками?
Сортировка вставками – это простой и эффективный алгоритм сортировки на основе сравнения. Он работает путем разделения входных данных на две части: отсортированную часть и неотсортированную часть. Алгоритм перебирает несортированную часть, сравнивая каждый элемент с элементами отсортированной части и вставляет элемент в правильное положение в отсортированной части.
Реализация кода:
Давайте посмотрим на пример кода Dart, чтобы понять, как работает сортировка вставками:
void insertionSort(List<num> list) {
for (var i = 1; i < list.length; i++) {
var key = list[i];
var j = i - 1;
while (j >= 0 && list[j] > key) {
list[j + 1] = list[j];
j--;
}
list[j + 1] = key;
}
}
void main() {
var numbers = [5, 2, 8, 12, 1, 6, 4];
insertionSort(numbers);
print(numbers); // Output: [1, 2, 4, 5, 6, 8, 12]
}
В приведенном выше коде мы определяем функцию insertionSort, которая принимает на вход список чисел. Функция перебирает список, начиная со второго элемента (индекс 1). Он сравнивает каждый элемент с элементами в отсортированной части (элементами перед текущим элементом) и сдвигает более крупные элементы вправо. Наконец, он вставляет текущий элемент в правильную позицию в отсортированной части.
Анализ эффективности.
Сортировка вставками имеет среднюю и наихудшую временную сложность O(n^2), где n — количество элементов в списке. Однако он хорошо работает для небольших списков или частично отсортированных списков. Его пространственная сложность также равна O(1), что делает его алгоритмом сортировки на месте.
Сортировка вставками – это простой, но эффективный алгоритм сортировки, который можно легко реализовать в Dart. Он работает путем разделения входных данных на отсортированную и несортированную часть и постепенной вставки элементов в правильные позиции. Хотя это, возможно, не самый эффективный алгоритм сортировки для больших списков, он отлично подходит для сценариев, когда входные данные малы или частично отсортированы.
Поняв концепцию сортировки вставками и попрактиковавшись в ее реализации, вы теперь имеете ценный инструмент в своем арсенале разработки программного обеспечения. Приятного кодирования!