- •Информатика как наука и вид практической деятельности.
- •Измерение информации.
- •Системы счисления.
- •Кодирование информации.
- •Самоконтролирующиеся коды
- •Самокорректирующиеся коды
- •Иллюстрация
- •Информационная энтропия. Формула Клода Шеннона
- •Кодирование графической информации
- •Кодирование звуковой информации
- •Алгоритмы и их свойства.
- •Алгоритм, его свойства. Формализация понятия алгоритма.
- •Всякий алгоритм может быть реализован машиной Тьюринга.
- •Пример алгоритма
- •Поиск с барьером
- •Бинарный (двоичный) поиск
- •Алгоритм
- •Сортировка методом Шелла
- •Алгоритм сортировки Шелла:
- •Системное программное обеспечение
- •Прикладное программное обеспечение
- •Принцип работы эвм рассматривается на примере персонального компьютера.
Сортировка методом Шелла
Сортировка Шелла (англ. Shell sort) — алгоритм сортировки, являющийся усовершенствованным вариантом сортировки вставками. Идея метода Шелла состоит в сравнении элементов, стоящих не только рядом, но и на определённом расстоянии друг от друга. Иными словами — это сортировка вставками с предварительными «грубыми» проходами. Аналогичный метод усовершенствования пузырьковой сортировки называется сортировка расчёской.
При сортировке
Шелла сначала сравниваются и сортируются
между собой значения, стоящие один от
другого на некотором расстоянии
(о
выборе значения
см.
ниже). После этого процедура повторяется
для некоторых меньших значений
,
а завершается сортировка Шелла
упорядочиванием элементов при
(то
есть обычной сортировкой вставками).
Эффективность сортировки Шелла в
определённых случаях обеспечивается
тем, что элементы «быстрее» встают на
свои места (в простых методах сортировки,
например, пузырьковой, каждая перестановка
двух элементов уменьшает количество
инверсий в списке максимум на 1, а при
сортировке Шелла это число может быть
больше).
Невзирая на то, что сортировка Шелла во многих случаях медленнее, чем быстрая сортировка, она имеет ряд преимуществ:
отсутствие потребности в памяти под стек;
отсутствие деградации при неудачных наборах данных — быстрая сортировка легко деградирует до O(n²), что хуже, чем худшее гарантированное время для сортировки Шелла.
Алгоритм сортировки Шелла:
В этом методе первоначально рассматриваются элементы отстоящие друг от друга на расстояние d=[n/2], где [ ] - операция взятия целой части, и n - количество элементов исходного массива.
На следующих шагах d меняется по закону d=[d/2], при d=1 метод Шелла вырождается в метод стандартного обмена ("Метод Пузырка")
Сортировка слиянием (англ. merge sort) — алгоритм сортировки, который упорядочивает списки (или другие структуры данных, доступ к элементам которых можно получать только последовательно, например — потоки) в определённом порядке. Эта сортировка — хороший пример использования принципа «разделяй и властвуй». Сначала задача разбивается на несколько подзадач меньшего размера. Затем эти задачи решаются с помощью рекурсивного вызова или непосредственно, если их размер достаточно мал. Наконец, их решения комбинируются, и получается решение исходной задачи.
Пример сортировки слиянием. Сначала делим список на кусочки (по 1 элементу), затем сравниваем каждый элемент с соседним, сортируем и объединяем. В итоге, все элементы отсортированы и объединены вместе.
Для решения задачи сортировки эти три этапа выглядят так:
Сортируемый массив разбивается на две части примерно одинакового размера;
Каждая из получившихся частей сортируется отдельно, например — тем же самым алгоритмом;
Два упорядоченных массива половинного размера соединяются в один.
1.1. - 2.1. Рекурсивное разбиение задачи на меньшие происходит до тех пор, пока размер массива не достигнет единицы (любой массив длины 1 можно считать упорядоченным).
3.1. Соединение двух упорядоченных массивов в один. Основную идею слияния двух отсортированных массивов можно объяснить на следующем примере. Пусть мы имеем два уже отсортированных по возрастанию подмассива. Тогда: 3.2. Слияние двух подмассивов в третий результирующий массив. На каждом шаге мы берём меньший из двух первых элементов подмассивов и записываем его в результирующий массив. Счетчики номеров элементов результирующего массива и подмассива из которого был взят элемент увеличиваем на 1. 3.3. "Прицепление" остатка. Когда один из подмассивов закончился, мы добавляем все оставшиеся элементы второго подмассива в результирующий массив.
14
Рекурсия (от латинского recursio - возвращение) - это такой способ организации вычислительного процесса, при котором процедура или функция в ходе выполнения составляющих ее операторов обращается сама к себе.
Для того, чтобы такое обращение не было бесконечным, в тексте подпрограммы должно быть условие, по достижению которого дальнейшего обращения не происходит. таким образом, рекурсивное обращение может включаться только в одну из ветвей подпрограммы.
Процедура или функция, вызывающая саму себя, называется рекурсивной.
Возможность вызова самой себя связанна с тем, что при каждом новом обращении к подпрограмме параметры, которые она использует, заносятся в стек, причем параметры предыдущего обращения также сохраняются.
В ряде случае рекурсивное оформление подпрограмм может быть более компактным и эффективным.
Рекурсивная программа должна иметь специальный "выход", для предотвращения зацикливания, которое приводить к переполнению памяти, отведённой под стек.
Рекурсия может быть как прямой , когда программа вызывает саму себя, так и непрямой( косвенной ) , когда программа вызывает другую программу, а та в свою очередь, вызывает первую программу.
15
Вся совокупность программ, хранящихся на всех устройствах долговременной памяти компьютера, составляет его программное обеспечение (ПО).
Совокупность программ системы обработки информации и программных документов, необходимых для эксплуатации этих программ (ГОСТ 19781-90).
Возможности современного ПК столь велики, что все большее число людей находят ему применение в своей работе, учебе, быту. Важнейшим качеством современного компьютера является его "дружественность" по отношению к пользователю. Общение человека с компьютером стало простым, наглядным, понятным. Компьютер сам подсказывает пользователю, что нужно делать в той или иной ситуации, помогает выходить из затруднительных положений. Это возможно благодаря программному обеспечению компьютера.
Программное обеспечение является одним из видов обеспечения вычислительной системы, наряду с техническим (аппаратным), математическим, информационным, лингвистическим, организационным и методическим обеспечением.
