пр5
.docxПрактическая работа № 5
Сортировка массивов методом Шелла
Цель работы: научиться сортировать одномерные и двумерные массивы методом Шелла.
Задание: отсортировать в двумерном массиве строку, в которой находится максимальное число.
#include <iostream> #include <cstdlib> #include <iomanip> using namespace std; int main() { setlocale(LC_ALL, "Russian"); const int size = 5; int M[size][size]; int max_index_i = 0; int max_index_j = 0; cout << "Массив: " << endl; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++){ M[i][j] = rand() % 100 - 50; cout << setw(5) << M[i][j]; if(M[i][j] > M[max_index_i][max_index_j]) { max_index_i = i; max_index_j = j; } } cout << endl; } cout << "Максимальное значение " << M[max_index_i][max_index_j] << ", в строке " << max_index_i << ".\n"; int i, j, k, t; for (k = size/2; k > 0; k /=2){ for (i = k; i < size; i++) { t = M[max_index_i][i]; for (j = i; j >= k; j -= k) if (t < M[max_index_i][j - k]) M[max_index_i][j] = M[max_index_i][j-k]; else break; M[max_index_i][j] = t; } } cout << "Новый массив:" << endl; for (int i = 0; i < size; i++){ for (int j = 0; j < size; j++) cout << setw(5) << M[i][j]; cout << endl; } return 0; } |