Практикум по курсу "Алгоритмизация и программирование". Часть 1. Андрианова А.А - 53 стр.

UptoLike

53
a = new int[n];
if (a == null)
{
Console.WriteLine("Запрошено большое количество памяти.");
Console.WriteLine("Попробуйте ввести меньшее количество.");
return;
}
Console.WriteLine("Введите элементы массива:");
for (int i = 0; i < n; i++)
int.TryParse(Console.ReadLine(), out a[i]);
for (int i = 0; i < n - 1; i++)
{
int f = 0;
for (int j = 0; j < n - i - 1; j++)
if (a[j] > a[j + 1])
{
int z = a[j]; a[j] = a[j + 1]; a[j + 1] = z; f = 1;
}
if (f == 0)
break;
}
Console.WriteLine("Отсортированный массив:");
for (int i = 0; i < n; i++)
Console.Write("{0} ", a[i]);
Console.WriteLine();
}
}
}
Задача 6. Осуществить слияние двух отсортированных по возрастанию
массивов.
Поскольку оба исходных массива упорядочены, минимальные элементы
в них стоят на первом месте. Выбираем из них наименьший и заносим его во
вновь создаваемый массив. Далее следует исключить этот элемент из
рассмотрения посредством перехода к следующему элементу того массива,
откуда был взят минимальный элемент. Повторяем эти действия со
следующей парой элементов наименьшими из нерассмотренных элементов
исходных массивов) и так до тех пор, пока не закончится один из массивов.
Остатки второго массива просто переносим в конец нового массива.
Блок-схема решения задачи 6 показана на Рис.4.12.
Код программы для задачи 6.
using System;
namespace Examples
{
                a = new int[n];
                if (a == null)
                {
                    Console.WriteLine("Запрошено большое количество памяти.");
                    Console.WriteLine("Попробуйте ввести меньшее количество.");
                    return;
                }
                Console.WriteLine("Введите элементы массива:");
                for (int i = 0; i < n; i++)
                    int.TryParse(Console.ReadLine(), out a[i]);
                for (int i = 0; i < n - 1; i++)
                {
                    int f = 0;
                    for (int j = 0; j < n - i - 1; j++)
                        if (a[j] > a[j + 1])
                        {
                            int z = a[j]; a[j] = a[j + 1]; a[j + 1] = z; f = 1;
                        }
                    if (f == 0)
                        break;
                }

                Console.WriteLine("Отсортированный массив:");
                for (int i = 0; i < n; i++)
                    Console.Write("{0} ", a[i]);
                Console.WriteLine();
            }
        }
    }

    Задача 6. Осуществить слияние двух отсортированных по возрастанию
массивов.
    Поскольку оба исходных массива упорядочены, минимальные элементы
в них стоят на первом месте. Выбираем из них наименьший и заносим его во
вновь создаваемый массив. Далее следует исключить этот элемент из
рассмотрения посредством перехода к следующему элементу того массива,
откуда был взят минимальный элемент. Повторяем эти действия со
следующей парой элементов (с наименьшими из нерассмотренных элементов
исходных массивов) и так до тех пор, пока не закончится один из массивов.
Остатки второго массива просто переносим в конец нового массива.
    Блок-схема решения задачи 6 показана на Рис.4.12.

    Код программы для задачи 6.
    using System;

    namespace Examples
    {
                                        53