- •Ibm выпускает свою первую коммерческую систему - ibm 701. Всего было построено 19 машин.
- •3. Системы счисления. Основные позиционные системы счисления
- •6. Способы представление изображений
- •7. Дополнительный код чисел
- •8. Представление чисел в формате с плавающей точкой
- •9. Методы сжатия информации
- •Метод относительного кодирования
- •Метод кодирования длины серий
- •Частотно-зависимое кодирование
- •Метод Лемпеля-Зива
- •10. Коды с обнаружением и исправлением ошибок
- •11. Основные понятия алгебры логики
- •12. Метод Куайна-Маккласки
- •13. Метод карт Карно
- •16. Двоичный сумматор: назначение, условное обозначение и пример реализации
- •24. Алгоритм обменной сортировки
- •25. Алгоритм сортировки выбором
- •26. Алгоритм последовательного поиска
- •27. Двоичного поиска
- •28. Базовые алгоритмические конструкции
- •29. Итерационные и рекурсивные алгоритмы
- •30. Типы и структуры данных
- •31. Критерии оценки эффективности алгоритмов
- •33. Абстрактная машина Тьюринга
- •35. Модульная арифметика
- •36. Криптография с использованием открытых ключей
- •38. Языки и парадигмы программирования
- •39. Организация основной памяти вычислительной машины
- •40. Устройства и характеристики внешней памяти вычислительной машины
- •Flash-память
- •41. Основные принципы построения вычислительной машины.
- •43. Архитектура вычислительной машины
- •Cisc- и risc-архитектура компьютеров
- •Способы организации вычислительного процесса
- •44. Классификация программного обеспечения
- •47. Требования, предъявляемые к компьютерным сетям
- •48. Концепция распределения ресурсов сети
- •49. Топология компьютерных сетей
- •50. Адресация компьютеров
- •51. Модель взаимодействия открытых систем
- •52. Функции уровней модели взаимодействия открытых систем
- •53. Сетевые технологии
- •54. Основные виды линий связи
- •Проводные линии связи
- •Беспроводные линии связи
- •55. Коммуникационное оборудование компьютерных сетей
- •56. Структура Интернета
- •57. Стек протоколов tcp/ip
- •59. Основные службы Интернета
- •60. Адресация ресурсов Интернета
- •64. Реляционная модель данных
- •65. Операции реляционной алгебры
- •67. Целостность данных, первичный и внешний ключи
- •Участники процесса разработки по
27. Двоичного поиска
Алгоритм двоичного поиска предполагает на каждом шаге деления массива на две части и отбрасывание той его части, элементы которой заведомо имеют значения либо меньше, либо больше искомого. Именно это повторяющееся деление на два послужило причиной того, что данный алгоритм был назван двоичным поиском. Псевдокод алгоритма приведен ниже. Входными параметрами алгоритма являются:Value - искомое значение; Array[] - массив элементов; FirstIndex - индекс начала фрагмента массива; LastIndex - индекс конца фрагмента массива.
function Search(Value, Array[], FirstIndex, LastIndex) { MiddleIndex:= FirstIndex+(LastIndex-FirstIndex +1) div 2; if (Value=Array[MiddleIndex]) then return MiddleIndex; if (Value < Array[MiddleIndex]) then { if (FirstIndex=MiddleIndex) then return Null; Index:=Search(Value, Array[],FirstIndex, MiddleIndex-1); if (Index <> Null) then return Index; else return Null; } if (Value > Array[MiddleIndex]) then { if (MiddleIndex=LastIndex) then return Null; Index:=Search(Value, Array[],MiddleIndex+1, LastIndex); if (Index <> Null) then return Index; else return Null; } }
В приведенном выше псевдокоде последовательность символов divобозначает операцию целочисленного деления.
28. Базовые алгоритмические конструкции
Из приведенных блоков для нас представляют интерес логический блок и блок обработки информации. Именно они определяют логику работы алгоритма. Однако не следует произвольно соединять их между собой. При разработке программ рекомендуется разбивать общую задачу на отдельные подзадачи. Решение подзадачи представляет собой самостоятельный алгоритм, который может быть представлен как блок обработки информации с одним входом и одним выходом. Несоблюдение этого правила приводит к тому, что программа [алгоритм] становится плохо читаемой и запутанной. Правильно составленный алгоритм может быть собран из элементов четырех типов, которые будем называть базовыми алгоритмическими конструкциями. Каждая такая конструкция имеет по одному входу и выходу и может быть заменена одним блоком обработки.
Следование. Последовательность нескольких блоков обработки информации [см. рис. 1].
Рис. 1. Следование
Ветвление. Эта конструкция состоит из логического блока и одно или двух блоков обработки информации [см. рис. 2]. Если блок обработки информации один, то говорят, что конструкция имеет сокращенную форму.
Рис. 2. Ветвление
Цикл [повторение] с предусловием. Состоит из одного блока обработки информации и одного логического блока [см. рис. 3]. Команда выполняется до тех пор, пока условие не станет ложным.
Рис. 3. Цикл с предусловием
Цикл [повторение] с постусловием. Существенное отличие от предыдущей конструкции заключается в том, что поскольку проверка условия находится в конце конструкции, то команда будет выполнена не менее одного раза [см. рис. 4].
Рис. 4. Цикл с постусловием
29. Итерационные и рекурсивные алгоритмы
Алгоритм, в состав которого входит цикл, называется итерационным [от лат. iteratio - повторение].
Алгоритм называется рекурсивным [от лат. recursio - возвращение], если обращение к этому алгоритму может производится из него самого.
Для некоторых задач применение рекурсии нежелательно, она может существенно снижать производительность. Однако, есть задачи, в которых применение рекурсии дает более изящное и компактное решение без потери производительности. Далее мы рассмотрим примеры задач этих трех типов.
На рис. 1 и 2 приведены блок-схемы соответственно итерационного и рекурсивного алгоритмов нахождения факториала.
Рис. 1. Итерационный алгоритм
Рис. 2. Рекурсивный алгоритм