diff --git a/task4.cpp b/task4.cpp new file mode 100644 index 0000000..18264e9 --- /dev/null +++ b/task4.cpp @@ -0,0 +1,43 @@ +#include + +void selectionSort(int arr[], int n) +{ + for (int i = 0; i < n - 1; i++) + { + // Будем считать, что i - минимальный элемент + int min_idx = i; + + // Пройдемся по несортированной части массива и найдем + // настоящий минимальный элемент + for (int j = i + 1; j < n; j++) + { + // Если этот элемент меньше известного минимума, + // то он будет назначен новым минимумом + if (arr[j] < arr[min_idx]) + { + min_idx = j; + } + } + + // Перемещаем минимальный элемент на место + // элемента, который раньше считался минимумом. + // temp нужен для свапа, чтобы не забыть значение. + int temp = arr[i]; + arr[i] = arr[min_idx]; + arr[min_idx] = temp; + } +} + +int main() { + int arr[] = {12, 11, 13, 5, 6}; + int n = sizeof(arr) / sizeof(arr[0]); + + selectionSort(arr, n); + + for (int i = 0; i < n; i++) { + std::cout << arr[i] << " "; + } + std::cout << std::endl; + + return 0; +}