- •Информатика
- •Ответы на вопросы
- •1). Функции ос
- •2). Функции осmsdos. Обеспечение автоматического запуска ос,
- •3). Файлы autoexec.Bat и config.Sys Начальнаязагрузка.
- •4. Файловая структура. Диски, файлы, их имен
- •Работа с каталогами.
- •Работа с экраном, принтером.
- •Общесистемные команды.
- •5. Каталоги. Корневой и текущий каталоги. Путь к файлу.
- •6. Основные командыMsdos. Команды работы с каталогами
- •7. Оболочка Norton Commander. Возможности Norton Commander Оболочка Norton Commander
- •8. Дерево каталогов вNortonCommander. Просмотр и редактирование файлов.Создание и удаление файлов. Работа с группами файлами. Оболочка Norton Commander
- •Внешний вид экрана
- •Выделение файлов
- •Работа с файлами
- •Создание каталога
- •Дерево каталогов
- •9. Панели и функциональные клавиши вNortonCommander. Меню Norton Commander, Meню пользователя.
- •Активная панель. Управление указателем
- •Смена диск
- •Управление панелями:
- •Меню Norton Commander
- •Функциональные клавиши:
- •10 Структура и общие принципы построения программы вTurboPascal'eАлфавит,лексика. Операторные скобки. Алфавит Константы. Переменные.
- •11 Типы данных вTurboPascal`е. Порядковый, вещественный, структурированныйСовместимость и преобразование типов.
- •Простые типы данных
- •12 Имена и доступ к файлам в Turbo Pascal`е
- •13 Операторы ввода' вывода вTurboPascal`е
- •14 Операции вTurboPascal`е Математические операции
- •Логические операции
- •Операции отношения
- •Оператор выбора
- •16 Метки и оператор перехода.
- •17 Операторы циклов с предусловием, постусловием и с параметром вTurbo Pascal`е
- •18 Процедуры и функции вTurboPascal`е. Локализация имен.
- •19 Локальные и глобальные переменные вTurboPascal'e.
- •20 Процедуры и функции формальные и фактические параметры вTurbo Pascal`е
- •21 Переход в графический режим в Turbo Pascal`е. Масштабирование
- •22 Процедуры и функции вTurbo Pascal`е Pascal's для работы с экраном в графическом режиме.
- •23 Алгоритмы поиска и выборки элементовиз массивов данных. Двоичный (бинарный) поиск элемента в массиве
- •Интерполяционный поиск элемента в массиве
- •Критерии Эффективности
- •Сортировка выбором
- •Сортировка пузырьком
- •Сортировка простыми вставками
- •Сортировка Шелла (Ох и презабавная вещь).
- •Пирамидальная сортировка (Эх, мать…) Вариант №1 (Вики):
- •Вариант №2 (Алголист)
- •Фаза 1 сортировки: построение пирамиды
- •Фаза 2: собственно сортировка
- •Сортировка быстрая («Чем дальше в лес, тем злее дятлы…») Вариант №1 (Вики):
- •Вариант №2 (Forum.Pascal.Net):
- •Сортировка поразрядная
- •25 Табличный редактор Excel абсолютные и относительные адреса. Запись и выполнение операций. Графическое оформление результатов.
- •Список Крематоров. Примечания и пожелания.
- •В фильме снимались:
Сортировка быстрая («Чем дальше в лес, тем злее дятлы…») Вариант №1 (Вики):
Алгоритм
Быстрая сортировка использует стратегию «разделяй и властвуй». Шаги алгоритма таковы:
Выбираем в массиве некоторый элемент, который будем называть опорным элементом.
Операция разделения массива: реорганизуем массив таким образом, чтобы все элементы, меньшие или равные опорному элементу, оказались слева от него, а все элементы, большие опорного — справа от него.
Рекурсивно упорядочиваем подсписки, лежащие слева и справа от опорного элемента.
Базой рекурсии являются списки, состоящие из одного или двух элементов, которые уже упорядочены. Алгоритм всегда завершается, поскольку за каждую итерацию он ставит по крайней мере один элемент на его окончательное место.
Улучшения
При выборе опорного элемента из данного диапазона случайным образом, худший случай становится очень маловероятным и ожидаемое время выполнения алгоритма сортировки - O(n log n).
Вариант №2 (Forum.Pascal.Net):
Быстрая сортировка Хоара
Это улучшенный метод, основанный на обмене. При "пузырьковой" сортировке производятся обмены элементов в соседних позициях. При пирамидальной сортировке такой обмен совершается между элементами в позициях, жестко связанных друг с другом бинарным деревом. Ниже будет рассмотрен алгоритм сортировки К. Хоара, использующий несколько иной механизм выбора значений для обменов. Этот алгоритм называется сортировкой с разделением или быстрой сортировкой. Она основана на том факте, что для достижения наибольшей эффективности желательно производить обмены элементов на больших расстояниях.
Предположим, что даны N элементов массива, расположенные в обратном порядке. Их можно рассортировать, выполнив всего N/2 обменов, если сначала поменять местами самый левый и самый правый элементы и так далее, постепенно продвигаясь с двух сторон к середине. Это возможно только, если мы знаем, что элементы расположены строго в обратном порядке.
Рассмотрим следующий алгоритм: выберем случайным образом какой-то элемент массива (назовем его X). Просмотрим массив, двигаясь слева направо, пока не найдем элемент a[ i ]>X (сортируем по возрастанию), а затем просмотрим массив справа налево, пока не найдем элемент a[ j ]<X. Далее, поменяем местами эти два элемента a[ i ] и a[ j ] и продолжим этот процесс "просмотра с обменом", пока два просмотра не встретятся где-то в середине массива.
После такого просмотра массив разделится на две части: левую с элементами меньшими (или равными) X, и правую с элементами большими (или равными) X. Итак, пусть a[k] (k=1,...,N) - одномерный массив, и X - какой-либо элемент из a. Надо разбить "a" на две непустые непересекающиеся части а1 и а2 так, чтобы в a1 оказались элементы, не превосходящие X, а в а2 - не меньшие X.
Рассмотрим пример. Пусть в массиве a: <6, 23, 17, 8, 14, 25, 6, 3, 30, 7> зафиксирован элемент x=14. Просматриваем массив a слева направо, пока не найдем a[ i ]>x. Получаем a[2]=23. Далее, просматриваем a справа налево, пока не найдем a[ j ]<x. Получаем a[10]=7. Меняем местами a[2] и a[10]. Продолжая этот процесс, придем к массиву <6, 7, 3, 8, 6> <25, 14, 17, 30, 23>, разделенному на две требуемые части a1, a2. Последние значения индексов таковы: i=6, j=5. Элементы a[1],....,a[i-1] меньше или равны x=14, а элементы a[j+1],...,a[n] больше или равны x. Следовательно, разделение массива произошло.
Описанный алгоритм прост и эффективен, так как сравниваемые переменные i, j и x можно хранить во время просмотра в быстрых регистрах процессора. Наша конечная цель - не только провести разделение на указанные части исходного массива элементов, но и отсортировать его. Для этого нужно применить процесс разделения к получившимся двум частям, затем к частям частей, и так далее до тех пор, пока каждая из частей не будет состоять из одного единственного элемента. Эти действия описываются следующей программой. Процедура Sort реализует разделение массива на две части, и рекурсивно обращается сама к себе...
Сложность O(n*logn), на некоторых тестах работает быстрее сортировки слияниями, но на некоторых специально подобранных - работает за O(n^2).
Примеры:
Type
arrType = Array[1 .. n] Of Integer;
{ первый вариант : }
Procedure HoarFirst(Var ar: arrType; n: integer);
Procedure sort(m, l: Integer);
Var i, j, x, w: Integer;
Begin
i := m; j := l;
x := ar[(m+l) div 2];
Repeat
While ar[i] < x Do Inc(i);
While ar[j] > x Do Dec(j);
If i <= j Then Begin
w := ar[i]; ar[i] := ar[j]; ar[j] := w;
Inc(i); Dec(j)
End
Until i > j;
If m < j Then Sort(m, j);
If i < l Then Sort(i, l)
End;
Begin
sort(1, n)
Type
arrType = Array[1 .. n] Of Integer;
{ второй вариант : }
Procedure HoarSecond(Var ar: arrType; n: Integer);
Procedure Sort(m, l: Integer);
Var i, j, x, w: Integer;
Begin
If m >= l Then Exit;
i := m; j := l;
x := ar[(m+l) div 2];
While i < j Do
If ar[i] < x Then Inc(i)
Else If ar[j] > x Then Dec(j)
Else Begin
w := ar[i]; ar[i] := ar[j]; ar[j] := w;
End;
Sort(m, Pred(j));
Sort(Succ(i),l);
End;
Begin
Sort(1, n)
End;
End;
