From 6198953b02b0dded2eebba93ed2d00e83fd253a2 Mon Sep 17 00:00:00 2001 From: Nikolai Papin Date: Sat, 14 Dec 2024 01:58:09 +0300 Subject: [PATCH] Task 3 --- task2.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 task2.cpp diff --git a/task2.cpp b/task2.cpp new file mode 100644 index 0000000..26ca298 --- /dev/null +++ b/task2.cpp @@ -0,0 +1,43 @@ +#include + +void insertionSort(int arr[], int n) +{ + // Алгоритм сортировки вставками + + for (int i = 1; i < n; i++) + { + // Подбираем ключевой элемент. + int key = arr[i]; + + // Устанавливаем j в конец массива, чтобы идти из конца в начало + int j = i - 1; + + // Перемещение до тех пор, пока не достигнуто начало массива + // и значение текущего элемента меньше ключевого + while (j >= 0 && arr[j] > key) + { + // Перемещаем элемен вправо + arr[j + 1] = arr[j]; + + // Сдвигаем индекс левее + j = j - 1; + } + // Ключевой элемент располагается правее последней позиции j + // (начало массива или элемент, больший чем ключевое значение) + arr[j + 1] = key; + } +} + +int main() +{ + int arr[] = {12, 11, 13, 5, 6}; + int n = sizeof(arr) / sizeof(arr[0]); + + insertionSort(arr, n); + + for (int i = 0; i < n; i++) + { + std::cout << arr[i] << " "; + } + std::cout << std::endl; +}