русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Сортировка с помощью прямого включения.


Дата добавления: 2014-02-04; просмотров: 843; Нарушение авторских прав


Введение.

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

В общем случае сортировку следует понимать как процесс перегруппировки, заданного множества объектов в определенном порядке.

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

Под внутренней сортировкой понимают сортировку массивов, так как массив можно поместить на хранение в оперативную (внутреннюю) память.

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

Мы будем рассматривать только внутреннюю сортировку.

Общая задача сортировки: пусть имеется множество элементов А={б1, б2,…, бp}. Под сортировкой будем понимать перестановку этих элементов в множество A’={бk1, бk2,…, бkp}, где при некоторой упорядочивающей функции f:A®A’ выполняется соотношение f(б1)£f(б2)£… £f(бp), причем, бki=f(бi).

 

Описание алгоритма: пусть имеется множество А={б1, б2,…, бp}

1. Разделим множество А на две части.

A={б1, б2,…, бi}È{бi+1,…, бp}, обозначим их AL и AR

Предполагается, что часть АL уже отсортирована.

2. Возьмем первый элемент части АR и поместим его в часть АL так, чтобы его порядок не нарушился.

3. Продолжаем, указанный процесс, до тех пор, пока не будет исчерпана часть АR.

На начальном этапе предполагается, что АL содержит только первый элемент множества А.



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

Если порядок не нарушается, т. е. x³бi, то x станет последним элементом множества.

Если выполняется х<бi, то сдвинем на позицию вправо бi+1®бi+1 и будем сравнивать x с бi Продолжаем процесс до тех пор, пока не найдем такой элемент бj, что х³бj.

Реализация алгоритма: составим процедуру, производящую сортировку линейного массива с помощью прямого включения.

Procedure IncludeSort(var a:TintVec; p:integer);

Var i, j, x: integer;

Begin

For i:=2 to p do (1)

Begin

x:=a[i];

j:=i; (2)

While (j>=2) and (x<a[j-1]) do

Begin

a[j]:=a[j-1]; (3)

j:=j-1;

End;

a[j]:=x;

End;

End.

Описание программы: блок (1) реализует циклический проход всех элементов некоторой части, в блоке (2) переменной х присваивается текущий просеиваемый элемент, j – номер просеиваемого элемента. Блок (3) реализует механизм просеивания.

Далее по окончании выполнения блока (3) переменная j содержит номер позиции вставки просеиваемого элемента и j-ому элементу присваивается просеиваемый элемент.

Анализ алгоритма.

Оценим количество обменов элементов. Минимальное количество Mmin=3*(p-1), среднее число обменов Mср=(p*p+9*p-10)/4, максимальное число обменов Mmax=(p*p+3*p-4)/2.

 



<== предыдущая лекция | следующая лекция ==>
Тема 12. Алгоритмы сортировки. | Алгоритм бинарной пирамидальной сортировки.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.188 сек.