#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int array_generate1(int *a, int SIZE) {
for (int i = 0; i < SIZE; i++) {
*(a + i) = rand() % 100;
cout << *(a + i) << " ";
}
return 1;
}
int array_generate2(int *a, int SIZE) {
// Заполняем двумерный массив, передаваемый как непрерывный блок памяти
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
*(a + i * SIZE + j) = rand() % 10;
cout << *(a + i * SIZE + j) << " ";
}
cout << endl;
}
return 1;
}
int Sort_Bubble1(int *a, int SIZE) {
for (int i = 0; i < SIZE - 1; i++) {
for (int j = 0; j < SIZE - 1 - i; j++) {
if (*(a + j) > *(a + j + 1)) {
int temp = *(a + j);
*(a + j) = *(a + j + 1);
*(a + j + 1) = temp;
}
}
}
for (int i = 0; i < SIZE; i++)
cout << *(a + i) << " ";
return 1;
}
int Sort_Bubble2(int *a, int SIZE) {
int total = SIZE * SIZE;
// Сортируем двумерный массив как одномерный блок из total элементов
for (int i = 0; i < total - 1; i++) {
for (int j = 0; j < total - 1 - i; j++) {
if (*(a + j) > *(a + j + 1)) {
int temp = *(a + j);
*(a + j) = *(a + j + 1);
*(a + j + 1) = temp;
}
}
}
// Выводим массив через указатель с корректным смещением: i * SIZE + j
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
cout << *(a + i * SIZE + j) << " ";
}
cout << endl;
}
return 1;
}
int main() {
setlocale(LC_ALL, "Rus");
srand(static_cast<unsigned int>(time(NULL)));
const int n1 = 10;
const int n2 = 5;
int arr1[n1];
int arr2[n2][n2];
cout << "Одномерный массив до сортировки: ";
array_generate1(arr1, n1);
cout << "\nОдномерный массив после сортировки: ";
Sort_Bubble1(arr1, n1);
cout << "\n\nДвумерный массив до сортировки:\n\n";
array_generate2(*arr2, n2);
cout << "\nДвумерный массив после сортировки:\n\n";
Sort_Bubble2(*arr2, n2);
return 0;
}
#include <iostream>
using namespace std;
//Напишите программу, реализующую алгоритмы сортировки для массивов
//из предыдущих лабораторных работ (одномерного и двумерного).
//Сортировка должна производится посредством вызова функции и передачей в нее адреса на массив.
//Функции для сортировки одномерного и двумерного массивов могут быть разными.
int array_generate1(int *a, int SIZE)
{
for (int i = 0; i < SIZE; i++)
{
*(a + i) = rand() % 100;
cout << *(a + i) << " ";
}
return 1;
}
int array_generate2(int *a, int SIZE)
{
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < SIZE; j++)
{
*(a + j) = rand() % 10;
cout << *(a + j) << " ";
}
cout << endl;
}
return 1;
}
int Sort_Bubble1(int *a, int SIZE)
{
for (int i = 0; i < SIZE - 1; i++)
{
for (int j = 0; j < SIZE - 1 - i; j++)
{
if (*(a + j) > *(a + j + 1))
{
int b = *(a + j);
*(a + j) = *(a + j + 1);
*(a + j + 1) = b;
}
}
}
for (int i = 0; i < SIZE; i++)
{
cout << *(a + i) << " ";
}
return 1;
}
int Sort_Bubble2(int *a, int SIZE)
{
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < SIZE - 1; j++)
{
for (int k = 0; k < SIZE - 1 - j; k++)
{
if (*(a + k) > *(a + k + 1))
{
int b = *(a + k);
*(a + k) = *(a + k + 1);
*(a + k + 1) = b;
}
}
}
}
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < SIZE; j++)
{
cout << *(a + j);
}
cout << endl;
}
return 1;
}
int main()
{
setlocale(LC_ALL, "Rus");
srand(time(NULL));
const int n1 = 10;
const int n2 = 5;
int arr1[n1];
int arr2[n2][n2];
cout << "Одномерный массив до сортировки: ";
array_generate1(arr1, n1);
cout << "\nОдномерный массив после сортировки: ";
Sort_Bubble1(arr1, n1);
cout << "\n\nДвумерный массив до сортировки:\n\n";
array_generate2(*arr2, n2);
cout << "\nДвумерный массив после сортировки: \n\n";
Sort_Bubble2(*arr2, n2);
}