4278

Обработка одномерных массивов на примере алгоритма сортировки и поиска

Лабораторная работа

Информатика, кибернетика и программирование

Работа с одномерными массивами. Указание к работе А) Разработать и отладить программу, в которой реализовать алгоритмы сортировки и поиска в соответствии с заданием. Определить время работы програ...

Русский

2015-01-14

312.5 KB

41 чел.

1. Цель работы

Приобретение и закрепление навыков работы с одномерными массивами.

2. Указание к работе

А) Разработать и отладить программу, в которой реализовать алгоритмы сортировки и поиска в соответствии с заданием. Определить время работы программы.

Для выполнения задания необходимо использовать два одномерных массива целых чисел А[M] и В[N]. Размеры М и N вводятся с клавиатуры. Инициализируйте исходные массивы случайными числами, после чего выведите их на экран. Далее отсортируйте массивы с использованием алгоритма, указанного в вашем задании, и снова выведите. Создайте массив С, который содержит элементы, отвечающие условию задания. Выбор необходимых элементов должен производится с помощью алгоритма поиска, указанного в вашем варианте.

В массиве С элементы должны содержаться в одном экземпляре. Вспомогательные массивы использовать запрещается, если в алгоритме сортировки не оговорено обратное.

Б) Сравните время работы программы при следующих размерах исходных массивов: 100, 1000, 5000, 10000, 15000 элементов. Циклы вывода элементов на экран рекомендуется закомментировать.

 3. Оформление отчета

В отчет включить:

  •  Тема и цель работы;
  •  Задание на выполнение (общая часть задания и конкретный вариант индивидуального задания);
  •  Алгоритм программы в виде псевдокода. Части алгоритма, выполняющие инициализацию, вывод, сортировку исходных массивов и поиск в них, целесообразно оформить в виде отдельных  подалгоритмов;
  •  Текст программы с комментариями;
  •  Результаты выполнения программы (для всех заданных размеров исходных массивов):
    •  Для минимального количества элементов в исходных массивах (100 элементов) – с распечаткой содержимого всех трех массивов для контроля правильности работы алгоритма;
    •  Для прочих вариантов количества элементов (1000 и выше) – только данные о времени выполнения программы.
  •  Результаты сравнения времени выполнения программы при разных размерах массивов. Для наглядности целесообразно построить график изменения времени выполнения при различных размерах массивов.

 4. Требования к работе

  1.  Приведенное выше содержание отчета достаточно для выполнения задания всех уровней сложности. Для максимальных уровней сложности задания (9 и 10) описание используемого алгоритма сортировки в задании не приводится, его необходимо найти и реализовать самостоятельно.
  2.  Требования по каждому критерию оценки:
    1.   Точное выполнение полученного варианта задания.
    2.  Включение в отчет всех материалов, указанных в приведенных выше требованиях к оформлению отчета. Не нужно включать в отчет пункты, специфичные для лабораторных работ 1 и 2.
    3.  Обратить внимание на аккуратность оформления псевдокода. Следите за уровнями вложенности алгоритмических конструкций и отображайте их соответствующими отступами. Разбиение псевдокода на части (выделение подалгоритмов сортировки и поиска) позволяет уменьшить вложенность и избежать лишних ошибок.
    4.  Качество алгоритма, время выполнения которого сильно зависит от размера исходных данных, зависит от наличия (или, наоборот, отсутствия) лишних операций, замедляющих его работу. Не помещайте действий, которые можно выполнить однократно, внутри циклов. Не забывайте, что разработанный алгоритм должен точно выполнять индивидуальное задание. Если возможны случаи, когда требуемый результат не может быть получен (а такие случаи возможны, особенно, если исходные данные имеют случайный характер), в алгоритме обязательно должна быть соответствующая проверка и выдача сообщения.
    5.   Исходный текст программы должен точно соответствовать разработанному алгоритму. Если в алгоритме выделены подалгоритмы сортировки и поиска, то они могут быть реализованы в виде отдельных функций программы, что не является обязательным, но повышает ценность работы.
    6.   Если при выполнении программы при каких-либо исходных данных могут возникнуть ситуации, приводящие к ошибке времени выполнения (например, к выходу индекса за пределы массива), необходимо это отслеживать. Отсутствие соответствующего контроля снижает надежность программы. Можно также добавить контроль корректного ввода размера массивов.
    7.  Основными конструкциями, используемыми в данной программе, являются циклы. Обращайте внимание на соответствие используемых в алгоритме и в программе видов циклов (while, do-while и for).

5. Теоретический материал

Инициализация массива случайными числами

Для выполнения лабораторной работы №3 придется пользоваться массивами большого размера. Размеры массивов в данной работе могут достигать 15 тысяч элементов, что не позволяет реализовать ввод данных с клавиатуры. Для решения этой задачи предлагается использовать инициализацию массива случайными числами.

Для работы с генератором случайных чисел необходимо создать объект стандартного класса Random:

Random Rnd = new Random();

Инициализация массива выполняется с помощью метода Next класса Random и может выглядеть следующим образом:

int maxValue = 100;

    int[] a = new int[1000];

    for (int i = 0; i < 1000; i++)

a[i] = Rnd.Next(0, maxValue); // Случайное число от 0 до 100

Измерение времени работы программы

В задании на лабораторную работу требуется измерить время работы программы. Для этого удобно воспользоваться стандартным классом Environment, который содержит свойство TickCount, в котором содержится время (в миллисекундах), прошедшее с момента загрузки операционной системы. Чтобы определить время работы какого-либо фрагмента кода, необходимо выполнить два замера времени (до и после этого фрагмента), а потом вычислить разность полученных значений. Для перевода результата в секунды можно разделить его на 1000.

Вот как может выглядеть текст функции Main(), в котором производится замер времени работы фрагмента кода:

static void Main(string[] args)

{    

   // Здесь выполняется инициализация данных (ввод массивов и проч.)    

   int t1 = Environment.TickCount;

   // Здесь выполняется основная работа программы

   ......

 

   int t2 = Environment.TickCount;

   // Печать затраченного времени на экране

   Console.WriteLine("Продолжительность работы: " + (t2 - t1) / 1000.0);

   // Печать полученного массива

}

Сортировка пузырьком

Расположим массив сверху вниз, от нулевого элемента - к последнему.

Идея метода: шаг сортировки состоит в проходе снизу вверх по массиву. По пути просматриваются пары соседних элементов. Если элементы некоторой пары находятся в неправильном порядке, то меняем их местами.

После нулевого прохода по массиву "вверху" оказывается самый "легкий" элемент - отсюда аналогия с пузырьком. Следующий проход делается до второго сверху элемента, таким образом, второй по величине элемент поднимается на правильную позицию...

Делаем проходы по все уменьшающейся нижней части массива до тех пор, пока в ней не останется только один элемент. На этом сортировка заканчивается, так как последовательность упорядочена по возрастанию.

Алгоритм сортировки «пузырьком» представлен ниже:

i-цикл от 0 до size с шагом 1

   j-цикл от size-1 до i с шагом -1

       если a[j-1] > a[j], то

           x = a[j-1]

           a[j-1] = a[j]

           a[j] = x

       все если

   все j-цикл

все i-цикл

Среднее число сравнений и обменов имеют квадратичный порядок роста: O(n2), отсюда можно заключить, что алгоритм пузырька очень медленен и малоэффективен.

Сортировка выбором

Идея метода состоит в том, чтобы создавать отсортированную последовательность путем присоединения к ней одного элемента за другим в правильном порядке.

Будем строить готовую последовательность, начиная с левого конца массива. Алгоритм состоит из n последовательных шагов, начиная от нулевого и заканчивая (n-1)-м.

На i-м шаге выбираем наименьший из элементов a[i] ... a[n] и меняем его местами с a[i]. Последовательность шагов при n=5 изображена на рисунке ниже.

Вне зависимости от номера текущего шага i, последовательность a[0]...a[i] (выделена курсивом) является упорядоченной. Таким образом, на (n-1)-м шаге вся последовательность, кроме a[n] оказывается отсортированной, а a[n] стоит на последнем месте по праву: все меньшие элементы уже ушли влево. Алгоритм сортировки выбором представлен ниже:

i-цикл от 0 до size с шагом 1

   k = i

   x = a[i]

   j-цикл от i + 1 до size с шагом 1

       если a[j] < x, то

           k = j

           x = a[j]

       все если

   все j-цикл

   a[k] = a[i]

   a[i] = x

все i-цикл

Для нахождения наименьшего элемента из n+1 рассматриваемых алгоритм совершает n сравнений. С учетом того, что количество рассматриваемых на очередном шаге элементов уменьшается на единицу, общее количество операций:

n + (n-1) + (n-2) + (n-3) + ... + 1 = 1/2 * ( n2+n ) = O(n2)

Таким образом, так как число обменов всегда будет меньше числа сравнений, время сортировки растет квадратично относительно количества элементов.

Алгоритм не использует дополнительной памяти: все операции происходят "на месте".

Сортировка вставками

Сортировка простыми вставками в чем-то похожа на вышеизложенные методы.

Аналогичным образом делаются проходы по части массива, и аналогичным же образом в его начале «вырастает» отсортированная последовательность...

Однако в сортировке пузырьком или выбором можно было четко заявить, что на i-м шаге элементы a[0]...a[i] стоят на правильных местах и никуда более не переместятся. Здесь же подобное утверждение будет более слабым: последовательность a[0]...a[i] упорядочена. При этом по ходу алгоритма в нее будут вставляться (см. название метода) все новые элементы.

Будем разбирать алгоритм, рассматривая его действия на i-м шаге. Как говорилось выше, последовательность к этому моменту разделена на две части: готовую a[0]...a[i] и неупорядоченную a[i+1]...a[n].

На следующем, (i+1)-м каждом шаге алгоритма берем a[i+1] и вставляем на нужное место в готовую часть массива.

Поиск подходящего места для очередного элемента входной последовательности осуществляется путем последовательных сравнений с элементом, стоящим перед ним.

В зависимости от результата сравнения элемент либо остается на текущем месте (вставка завершена), либо они меняются местами и процесс повторяется.

Таким образом, в процессе вставки мы «просеиваем» элемент x к началу массива, останавливаясь в случае, когда

  1.  Найден элемент, меньший x
  2.  Достигнуто начало последовательности.

Алгоритм сортировки вставками представлен ниже:

i-цикл от 0 до size с шагом 1

   x = a[i]

   

   j-цикл от i-1 пока (j >= 0 И a[j] > x) с шагом -1

       a[j+1] = a[j]

   все j-цикл

   a[j+1] = x

все i-цикл

Аналогично сортировке выбором, среднее, а также худшее число сравнений и пересылок оцениваются как O(n2), дополнительная память при этом не используется.

Хорошим показателем сортировки является весьма естественное поведение: почти отсортированный массив будет досортирован очень быстро. Это, вкупе с устойчивостью алгоритма, делает метод хорошим выбором в соответствующих ситуациях.

Сортировка подсчетом

Данный метод сортировки требует использования вспомогательного массива, по размеру совпадающего с исходным. В этот массив помещаются отсортированные элементы.

Суть метода заключается в том, что на каждом шаге подсчитывается, в какую позицию результирующего массива надо записать очередной элемент исходного массива. Выглядит это так:

Для i = 0 До N-1

 k = 0

Для j = 0  До N-1

 Если A(i) > A(j) Или A(i) = A(j) И j < i, То

  k = k +1

 Все-Если

Все-Для-j

B(k) = A(i) 

Все-Для-i

Вычисление номера позиции, куда нужно поместить очередной элемент, реализуется, исходя из следующих соображений. Слева от B(k) должны стоять элементы, меньшие или равные B(k). Значит, число k складывается из количества элементов меньших A(i) и, возможно, некоторого числа элементов, равных A(i). Условимся, что из равных мы будем учитывать только те элементы, которые в исходном массиве стоят левее A(i).

Сортировка слиянием

Этот метод сортирует массив последовательным слиянием пар уже отсортированных подмассивов, поэтому его и назвали сортировкой слиянием. Поскольку данный метод имеет повышенную (по сравнению с уже рассмотренными) сложность, то алгоритм данного метода предлагается найти в литературе и реализовать самостоятельно.

Линейный поиск в массиве

Линейным поиском называется обычный просмотр всего массива на предмет нахождения отдельного элемента, отвечающего заданному условию.

Линейный поиск – простейшая разновидность алгоритмов поиска данных.

Например, если нам требуется найти число 5 в массиве из 15 элементов, то мы начинаем поиск с элемента с номером 0 и последовательно проверяем каждый элемент на равенство числу 5. Если совпадение найдено – необходимо запомнить номер элемента и завершить цикл поиска.

Ввиду простоты алгоритма его псевдокод и реализация не приводятся и предлагаются для самостоятельной работы.

Двоичный поиск в массиве

Если у нас есть массив, содержащий упорядоченную последовательность данных, то очень эффективен двоичный поиск.

Переменные lowerBound и upperBound содержат, соответственно, левую и правую границы отрезка массива, где находится нужный нам элемент. Мы начинаем всегда с исследования среднего элемента отрезка. Если искомое значение меньше среднего элемента, мы переходим к поиску в верхней половине отрезка, где все элементы меньше только что проверенного. Другими словами, значением upperBound становится (M – 1) и на следующей итерации мы работаем с половиной массива. Таким образом, в результате каждой проверки мы вдвое сужаем область поиска. Так, в нашем примере, после первой итерации область поиска – всего лишь три элемента, после второй остается всего лишь один элемент. Таким образом, если длина массива равна 6, нам достаточно трех итераций, чтобы найти нужное число.

Двоичный поиск - очень мощный метод. Если, например, длина массива равна 1023, после первого сравнения область сужается до 511 элементов, а после второй - до 255. Легко посчитать, что для поиска в массиве из 1023 элементов достаточно 10 сравнений.

Алгоритм двоичного поиска приведен ниже:

lowerBound = 0

upperBound = size

Повторять бесконечно

   M = (lowerBound + upperBound) / 2

   Если K < A[M], то

       upperBound = M – 1

   Иначе Если K > A[M], то

       lowerBound = M + 1

   Иначе

       Сообщить «Элемент найден, его индекс: », M

       Выход из цикла

   Все если

   Если lowerBound > upperBound, то

       Сообщить «Элемент не найден»

       Выход из цикла

   Все если

Все повторять

В описанном выше алгоритме приняты следующие условия:

  1.  size – размер массива
  2.  K – число, которое нужно найти
  3.  М – индекс найденного элемента.

7. Варианты индивидуальных заданий

Задание

Сложность

Алгоритм сортировки

Алгоритм поиска

  1.  

элементы, присутствующие в обоих массивах А и В

1

Пузырьком

Линейный

  1.  

элементы, которые есть только в массиве А или только в массиве В

1

Пузырьком

Линейный

  1.  

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

1

Пузырьком

Линейный

  1.  

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

1

Пузырьком

Линейный

  1.  

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

1

Пузырьком

Линейный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

1

Пузырьком

Линейный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

1

Пузырьком

Линейный

  1.  

элементы массива А, повторяющиеся в массиве В несколько раз

1

Пузырьком

Линейный

  1.  

элементы присутствующие в обоих массивах А и В в одном экземпляре

1

Пузырьком

Линейный

  1.  

элементы, присутствующие в одном экземпляре либо только в массиве А, либо только в массиве В

1

Пузырьком

Линейный

  1.  

повторяющиеся элементы массива А, которые есть в массиве В

1

Пузырьком

Линейный

  1.  

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

1

Пузырьком

Линейный

  1.  

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

1

Пузырьком

Линейный

  1.  

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

1

Пузырьком

Линейный

  1.  

повторяющиеся элементы массива А, которых нет в массиве В

1

Пузырьком

Линейный

  1.  

элементы, присутствующие в обоих массивах А и В

2

Выбором

Линейный

  1.  

элементы, которые есть только в массиве А или только в массиве В

2

Выбором

Линейный

  1.  

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

2

Выбором

Линейный

  1.  

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

2

Выбором

Линейный

  1.  

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

2

Выбором

Линейный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

2

Выбором

Линейный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

2

Выбором

Линейный

  1.  

элементы массива А, повторяющиеся в массиве В несколько раз

2

Выбором

Линейный

  1.  

элементы присутствующие в обоих массивах А и В в одном экземпляре

2

Выбором

Линейный

  1.  

элементы, присутствующие в одном экземпляре либо только в массиве А, либо только в массиве В

2

Выбором

Линейный

  1.  

повторяющиеся элементы массива А, которые есть в массиве В

2

Выбором

Линейный

  1.  

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

2

Выбором

Линейный

  1.  

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

2

Выбором

Линейный

  1.  

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

2

Выбором

Линейный

  1.  

повторяющиеся элементы массива А, которых нет в массиве В

2

Выбором

Линейный

  1.  

элементы, присутствующие в обоих массивах А и В

3

Вставками

Линейный

  1.  

элементы, которые есть только в массиве А или только в массиве В

3

Вставками

Линейный

  1.  

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

3

Вставками

Линейный

  1.  

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

3

Вставками

Линейный

  1.  

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

3

Вставками

Линейный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

3

Вставками

Линейный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

3

Вставками

Линейный

  1.  

элементы массива А, повторяющиеся в массиве В несколько раз

3

Вставками

Линейный

  1.  

элементы присутствующие в обоих массивах А и В в одном экземпляре

3

Вставками

Линейный

  1.  

элементы, присутствующие в одном экземпляре либо только в массиве А, либо только в массиве В

3

Вставками

Линейный

  1.  

повторяющиеся элементы массива А, которые есть в массиве В

3

Вставками

Линейный

  1.  

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

3

Вставками

Линейный

  1.  

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

3

Вставками

Линейный

  1.  

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

3

Вставками

Линейный

  1.  

повторяющиеся элементы массива А, которых нет в массиве В

3

Вставками

Линейный

  1.  

элементы, присутствующие в обоих массивах А и В

4

Подсчетом

Линейный

  1.  

элементы, которые есть только в массиве А или только в массиве В

4

Подсчетом

Линейный

  1.  

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

4

Подсчетом

Линейный

  1.  

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

4

Подсчетом

Линейный

  1.  

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

4

Подсчетом

Линейный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

4

Подсчетом

Линейный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

4

Подсчетом

Линейный

  1.  

элементы массива А, повторяющиеся в массиве В несколько раз

4

Подсчетом

Линейный

  1.  

элементы присутствующие в обоих массивах А и В в одном экземпляре

4

Подсчетом

Линейный

  1.  

элементы, присутствующие в одном экземпляре либо только в массиве А, либо только в массиве В

4

Подсчетом

Линейный

  1.  

повторяющиеся элементы массива А, которые есть в массиве В

4

Подсчетом

Линейный

  1.  

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

4

Подсчетом

Линейный

  1.  

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

4

Подсчетом

Линейный

  1.  

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

4

Подсчетом

Линейный

  1.  

повторяющиеся элементы массива А, которых нет в массиве В

4

Подсчетом

Линейный

  1.  

элементы, присутствующие в обоих массивах А и В

5

Пузырьком

Двоичный

  1.  

элементы, которые есть только в массиве А или только в массиве В

5

Пузырьком

Двоичный

  1.  

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

5

Пузырьком

Двоичный

  1.  

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

5

Пузырьком

Двоичный

  1.  

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

5

Пузырьком

Двоичный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

5

Пузырьком

Двоичный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

5

Пузырьком

Двоичный

  1.  

элементы массива А, повторяющиеся в массиве В несколько раз

5

Пузырьком

Двоичный

  1.  

элементы присутствующие в обоих массивах А и В в одном экземпляре

5

Пузырьком

Двоичный

  1.  

элементы, присутствующие в одном экземпляре либо только в массиве А, либо только в массиве В

5

Пузырьком

Двоичный

  1.  

повторяющиеся элементы массива А, которые есть в массиве В

5

Пузырьком

Двоичный

  1.  

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

5

Пузырьком

Двоичный

  1.  

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

5

Пузырьком

Двоичный

  1.  

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

5

Пузырьком

Двоичный

  1.  

повторяющиеся элементы массива А, которых нет в массиве В

5

Пузырьком

Двоичный

  1.  

элементы, присутствующие в обоих массивах А и В

6

Выбором

Двоичный

  1.  

элементы, которые есть только в массиве А или только в массиве В

6

Выбором

Двоичный

  1.  

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

6

Выбором

Двоичный

  1.  

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

6

Выбором

Двоичный

  1.  

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

6

Выбором

Двоичный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

6

Выбором

Двоичный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

6

Выбором

Двоичный

  1.  

элементы массива А, повторяющиеся в массиве В несколько раз

6

Выбором

Двоичный

  1.  

элементы присутствующие в обоих массивах А и В в одном экземпляре

6

Выбором

Двоичный

  1.  

элементы, присутствующие в одном экземпляре либо только в массиве А, либо только в массиве В

6

Выбором

Двоичный

  1.  

повторяющиеся элементы массива А, которые есть в массиве В

6

Выбором

Двоичный

  1.  

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

6

Выбором

Двоичный

  1.  

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

6

Выбором

Двоичный

  1.  

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

6

Выбором

Двоичный

  1.  

повторяющиеся элементы массива А, которых нет в массиве В

6

Выбором

Двоичный

  1.  

элементы, присутствующие в обоих массивах А и В

7

Вставками

Двоичный

  1.  

элементы, которые есть только в массиве А или только в массиве В

7

Вставками

Двоичный

  1.  

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

7

Вставками

Двоичный

  1.  

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

7

Вставками

Двоичный

  1.  

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

7

Вставками

Двоичный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

7

Вставками

Двоичный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

7

Вставками

Двоичный

  1.  

элементы массива А, повторяющиеся в массиве В несколько раз

7

Вставками

Двоичный

  1.  

элементы присутствующие в обоих массивах А и В в одном экземпляре

7

Вставками

Двоичный

  1.  

элементы, присутствующие в одном экземпляре либо только в массиве А, либо только в массиве В

7

Вставками

Двоичный

  1.  

повторяющиеся элементы массива А, которые есть в массиве В

7

Вставками

Двоичный

  1.  

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

7

Вставками

Двоичный

  1.  

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

7

Вставками

Двоичный

  1.  

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

7

Вставками

Двоичный

  1.  

повторяющиеся элементы массива А, которых нет в массиве В

7

Вставками

Двоичный

  1.  

элементы, присутствующие в обоих массивах А и В

8

Подсчетом

Двоичный

  1.  

элементы, которые есть только в массиве А или только в массиве В

8

Подсчетом

Двоичный

  1.  

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

8

Подсчетом

Двоичный

  1.  

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

8

Подсчетом

Двоичный

  1.  

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

8

Подсчетом

Двоичный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

8

Подсчетом

Двоичный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

8

Подсчетом

Двоичный

  1.  

элементы массива А, повторяющиеся в массиве В несколько раз

8

Подсчетом

Двоичный

  1.  

элементы присутствующие в обоих массивах А и В в одном экземпляре

8

Подсчетом

Двоичный

  1.  

элементы, присутствующие в одном экземпляре либо только в массиве А, либо только в массиве В

8

Подсчетом

Двоичный

  1.  

повторяющиеся элементы массива А, которые есть в массиве В

8

Подсчетом

Двоичный

  1.  

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

8

Подсчетом

Двоичный

  1.  

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

8

Подсчетом

Двоичный

  1.  

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

8

Подсчетом

Двоичный

  1.  

повторяющиеся элементы массива А, которых нет в массиве В

8

Подсчетом

Двоичный

  1.  

элементы, присутствующие в обоих массивах А и В

9

Слиянием

Линейный

  1.  

элементы, которые есть только в массиве А или только в массиве В

9

Слиянием

Линейный

  1.  

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

9

Слиянием

Линейный

  1.  

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

9

Слиянием

Линейный

  1.  

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

9

Слиянием

Линейный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

9

Слиянием

Линейный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

9

Слиянием

Линейный

  1.  

элементы массива А, повторяющиеся в массиве В несколько раз

9

Слиянием

Линейный

  1.  

элементы присутствующие в обоих массивах А и В в одном экземпляре

9

Слиянием

Линейный

  1.  

элементы, присутствующие в одном экземпляре либо только в массиве А, либо только в массиве В

9

Слиянием

Линейный

  1.  

повторяющиеся элементы массива А, которые есть в массиве В

9

Слиянием

Линейный

  1.  

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

9

Слиянием

Линейный

  1.  

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

9

Слиянием

Линейный

  1.  

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

9

Слиянием

Линейный

  1.  

повторяющиеся элементы массива А, которых нет в массиве В

9

Слиянием

Линейный

  1.  

элементы, присутствующие в обоих массивах А и В

10

Слиянием

Двоичный

  1.  

элементы, которые есть только в массиве А или только в массиве В

10

Слиянием

Двоичный

  1.  

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

10

Слиянием

Двоичный

  1.  

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

10

Слиянием

Двоичный

  1.  

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

10

Слиянием

Двоичный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

10

Слиянием

Двоичный

  1.  

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

10

Слиянием

Двоичный

  1.  

элементы массива А, повторяющиеся в массиве В несколько раз

10

Слиянием

Двоичный

  1.  

элементы присутствующие в обоих массивах А и В в одном экземпляре

10

Слиянием

Двоичный

  1.  

элементы, присутствующие в одном экземпляре либо только в массиве А, либо только в массиве В

10

Слиянием

Двоичный

  1.  

повторяющиеся элементы массива А, которые есть в массиве В

10

Слиянием

Двоичный

  1.  

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

10

Слиянием

Двоичный

  1.  

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

10

Слиянием

Двоичный

  1.  

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

10

Слиянием

Двоичный

  1.  

повторяющиеся элементы массива А, которых нет в массиве В

10

Слиянием

Двоичный


 

А также другие работы, которые могут Вас заинтересовать

43290. ОПРЕДЕЛЕНИЕ ОСНОВНЫХ ЭЛЕМЕНТОВ ГЛАДКИХ ЦИЛИНДРИЧЕСКИХ СОЕДИНЕНИЙ 2.09 MB
  1 Предельные размеры отверстия определяются по формулам: Dmx = D ES; Dmx = 63 0030 = 63030 мм Dmin = D EI; Dmin = 63 0= 63000 мм где Dmx Dmin наибольший и наименьший размеры отверстия; D номинальный размер соединения; ES EI верхнее и нижнее отклонения отверстия. Квалитеты точности отверстия и вала определяются по числу единиц допуска: D = TD i; D = = 16 где i единица допуска; i = 186 d = Td i; d = = 10 По числу...
43291. Структура реестра Windows 630 KB
  Курсовая работа состоит из трех основных глав, введения и заключения. Первая глава – ознакомление с реестром операционной системы Windows, роль реестра в операционной системе. Во второй главе рассматривается древовидная структура реестра операционной системы Windows, описание каждого раздела структуры реестра и их подразделов, параметры, типы данных и значения файлов реестра. В третьей главе описан редактор реестра Windows (Register Editor)
43292. УЧЕТ РАСЧЕТА С БЮДЖЕТОМ В ООО ПКЗ «ОМСКИЙ» РАЙОНА ОМСКОЙ ОБЛАСТИ 3.87 MB
  Организация аналитического и синтетического учета расчетов с бюджетом по налогам и сборам.26 ВВЕДЕНИЕ Любая бухгалтерия как сердце предприятия особенно чувствительна к изменениям в налогах. Среди экономических рычагов при помощи которых государство воздействует на рыночную экономику важное место отводится налогам. Для достижения этой цели необходимо решить ряд задач: анализ проблем формирования налоговых поступлений; особенности организации учета расчетов с бюджетов по налогам и сборам; представить...
43293. Расчет механизма привода 883 KB
  Механизм состоит из электродвигателя муфты червячного редуктора открытой цилиндрической передачи распределительного вала станка и горизонтальной базовой плиты. В данном механизме вращение с вала двигателя через муфту передаётся на червячную передачу. С промежуточного вала крутящий момент передается на выходной вал с помощью открытой цилиндрической передачи.1 При постоянной скорости выходного вала по известной потребляемой мощности Nвых в Вт и частоте вращения n об мин находим требуемую мощность двигателя: N==1335 063=722 Вт; N –...
43294. Усилитель электрических колебаний звуковой частоты 561.5 KB
  Усилителем электрических колебаний называется устройство, которое позволяет при наличии на его входе колебания с некоторым уровнем мощности получить на выходной нагрузке те же колебания, но с большим уровнем мощности.
43295. Разработка технологического процесса изготовления детали “Стойка задняя” 285.5 KB
  Минимальный припуск на обработку определяем по формуле: Суммарное пространственное отклонение расположения поверхностей с закреплением заготовки в трех кулачковом патроне определяем по формуле: где: Δкор отклонение оси детали от прямолинейности;1том. Технологические операции и переходы обработки элементных повстей Элементы Припуска Расчетный припуск 2Ziminмкм Расчетный миный размер мм Допуск TD мкм Принятые...
43296. Расчет усилителя звуковой частоты 1.49 MB
  Анализ технического задания В техническом задании мне было предложено разработать УЗЧ по заданным параметрам. Предполагается использование такого усилителя для высокочастотного усиления сигнала высокого качества например записанного на компакт диск поэтому fн я оставилна 20 Гц для лучшего звучания бассов. Параметры микросхемы таковы: Uп=22В P=18Bт Rн=8Ом Fн=20Гц Fв=20кГц Iп=120мА Кг=03 Rвх=50кОм Кш=03мкВ Ку=26 дБ 4. Выбор элементов будем производить на основе выходных параметров усилителя...
43297. Расчет усилителя звуковой частоты мощностью 30 мВ 510 KB
  Широкое распространение получили операционные усилители на основе которых можно сконструировать отдельные каскады и структурные блоки усилителя. Техническое задание Выходная мощность Pвых 7 Вт Сопротивление нагрузки Rн 4 Ом Входное напряжение Uвх 35мВ...
43298. Проектирование усилителя звуковой частоты на основе интегральных микросхемах 605.5 KB
  Схема усилителя в среде Micro Cp15 Построение АЧХ усилителя мощности звуковой частоты. Широкое распространение получили операционные усилители на основе которых можно сконструировать отдельные каскады и структурные блоки усилителя. Техническое задание Выходная мощность Pвых 7 Вт Сопротивление нагрузки Rн...