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

Реализация различных методов сортировки. Алгоритмические языки программирования. Обработка большого числа единообразно организованных данных. Алгоритмы сортировки массивов. Анализ проблем реализации и использования различных видов сортировок массивов.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 07.07.2011
Размер файла 640,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

ВВЕДЕНИЕ

Практически в каждом программном проекте возникает необходимость обработки большого числа единообразно организованных данных. В таких случаях подобные данные удобно обрабатывать как единое целое, для чего он представляется в виде массива - именованной последовательности данных одного типа.

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

В данной курсовой работе рассматривается один из способов обработки массивов - сортировка массива.

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

Научная значимость данной работы состоит в описании и исследовании наиболее популярных методов сортировки. Практическая значимость темы «Сортировка массивов» состоит в анализе проблем реализации и использовании различных видов сортировок.

ГЛАВА 1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

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

МАССИВЫ

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

1.1 ОПИСАНИЕ ТИПА "МАССИВ"

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

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

В качестве элементов массива можно использовать и любой другой ранее описанный тип, поэтому вполне правомерно существование массивов записей, массивов указателей, массивов строк, массивов массивов и т.д. Элементами массива могут быть данные любого типа, включая структурированные. Тип элементов массива называется базовым. Особенностью языка Паскаль является то, "что число элементов массива фиксируется при описании и в процессе выполнения программы не меняется.

Элементы, образующие массив, упорядочены таким образом, что каждому элементу соответствует совокупность номеров (индексов), определяющих его местоположение в общей последовательности. Доступ к каждому отдельному элементу осуществляется путем индексирования элементов массива. Индексы представляют собой выражения любого скалярного типа, кроме вещественного. Тип индекса определяет границы изменения значений индекса. Для описания массива предназначено словосочетание array of (массив из).

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

Если в такой форме описания массива задан один индекс, массив называется одномерным, если два индекса -- двумерным, если n индексов -- n-мерным. Одномерный массив соответствует понятию линейной таблицы (вектора), двумерный -- понятию прямоугольной таблицы (матрицы, набору векторов). Размерность ограничена только объемом памяти конкретного компьютера. Одномерные массивы обычно используются для представления векторов, а двумерные -- для представления матриц.

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

Контроль правильности значений индексов массива может проводиться с помощью директивы компилятора R.. По умолчанию директива R. находится в пассивном состоянии {$R--}. Перевод в активное состояние вызывает проверку всех индексных выражений на соответствие их значений диапазону типа индекса.

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

1.1.1 Действия над массивами

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

1.1.2 Действия над элементами массива

После объявления массива каждый его элемент можно обработать, указав идентификатор (имя) массива и индекс элемента в квадратных скобках. Например, запись Mas[2], VectorZ[10] позволяет обратиться ко второму элементу массива Mas и десятому элементу массива VectorZ. При работе с двумерным массивом указываются два индекса, с п-мерным массивом -- n индексов. Например, запись MartU[4,4] делает доступным для обработки значение элемента, находящегося в четвертой строке четвертого столбца массива MartU.

Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные. Например, они могут находиться в выражениях в качестве операндов, использоваться в операторах for, while, repeat, входить в качестве параметров в операторы Readln, Read, Writeln, Write; им можно присваивать любые значения, соответствующие их типу.

Инициализация (присваивание начальных значений) массива заключается в присваивании каждому элементу массива одного и того же значения, соответствующего базовому типу. Наиболее эффективно эта операция выполняется с помощью оператора for.

Паскаль не имеет средств ввода-вывода элементов массива сразу, поэтому ввод и вывод значений производится поэлементно. Значения элементам массива можно присвоить с помощью оператора присваивания, как показано в примере инициализации, однако чаще всего они вводятся с экрана с помощью оператора Read или Readln с использованием оператора организации цикла for.

В связи с тем, что использовался оператор Readln, каждое значение будет вводиться с новой строки. Можно ввести и значения отдельных элементов, а не всего массива. Так, операторами Read(А[3]); Read(В[6,9]); вводится значение третьего элемента вектора A и значение элемента, расположенного в шестой строке девятого столбца матрицы В. Оба значения набираются на одной строке экрана, начиная с текущей позиции расположения курсора.

Копированием массивов называется присваивание значений всех элементов одного массива всем соответствующим элементам другого массива. Копирование можно выполнить одним оператором присваивания, например A:=D; или с помощью оператора for.

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

Иногда требуется осуществить поиск в массиве каких-либо элементов, удовлетворяющих некоторым известным условиям. Пусть, например, надо выяснить, сколько элементов массива A имеют нулевое значение. Для ответа на этот вопрос введем дополнительную переменную K и воспользуемся операторами for и if:

После выполнения цикла переменная K будет содержать количество элементов массива A с нулевым значением.

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

1.2 СОРТИРОВКА МАССИВОВ

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

Рассмотрим три метода сортировки одного и того же массива М из 20-ти целых чисел, Использование одного массива позволит объективно сравнить эффективность разных методов.

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

1.3 Линейная сортировка (сортировка отбором)

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

Введем в разделе описания следующие целые переменные:

L -- для указания позиции первого элемента в рассматриваемой части массива

J -- для указания подает очередного сравниваемого с ним элемента;

N -- для временного хранения значения первого элемента для обмена значениями с максимальным из рассматриваемой части массива;

L -- параметр цикла при выводе текущего значения элементов массива в процессе сортировки для наблюдения происходящих в массиве наблюдений;

А -- переменная, значение которой будет равно числу перестановок элементов.

Перед началом сортировки установим значение счетчика итераций А, равное 0. Для сортировки организуем два цикла for. Внешний цикл с параметром I, указывающим позицию первого элемента в неотсортированной части массива, и внутренний цикл с параметром I, указывающим позицию очередного, сравниваемого с первым, элемента неотсортированной части массива.

Если условие М[I] < М[J] выполняется, т. е. в неотсортированной части массива найден элемент, больший, чем первый, то обменять местами эти элементы. Обмен осуществляется следующим образом: сначала значение М[1] запоминается в переменной N, затем значение элемента массива из J-й позиции записывается в I-ю позицию, а после этого в J-ю позицию массива записывается значение переменной N. Для наблюдения изменений состояния массива после каждой перестановки зададим цикл вывода значений всех элементов.

Запустите интегрированную среду программирования. Введите текст программы Sort_Lin и запишите файл на диск под соответствующим именем, а затем откомпилируйте его. После того как компиляция выполнится успешно, запустите программу на исполнение, наблюдая в пошаговом режиме текущие значения переменных: I, J, N, M[I], M[J], а также просматривая на экране пользователя измененный за один проход внутреннего цикла массив. По последнему значению А определяем, что для данного массива сортировка по невозрастанию пузырьковым методом выполняется за 190 итераций.

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

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

Запустите интегрированную среду программирования. Введите текст программы Sort_Puz и запишите файл на диск под соответствующим именем, а затем отмасштабируйте его. После того как компиляция выполнится успешно, запустите программу на исполнение, наблюдая в пошаговом режиме текущие значения переменных: I, J, N, M[I], M[J], всего массива М, а по окончании цикла J просматривая измененный за один проход массив. Как видно по результатам наблюдения, оператором повтора for с параметром J выполняется циклический просмотр элементов массива от последнего до второго, и при этом элементы, большие, чем «соседи» слева, смещаются при обмене к началу массива, а меньшие -- вправо -- «всплывают» в конец массива. Каждый просмотр фиксируется счетчиком просмотров -- увеличением на единицу значения переменной А. После каждого просмотра-сравнения элементов массива просматриваемый участок массива уменьшается на один элемент, так как из рассмотрения исключается самый левый -- самый большой элемент. Такое уменьшение просматриваемого участка выполняется внешним циклом for с параметром I.

По последнему значению А определяем, что для данного массива сортировка по невозрастанию пузырьковым методом выполняется за 170 итераций.

Метод быстрой сортировки с разделением

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

Запустите интегрированную среду программирования. Введите текст программы Quick_sort и запишите файл на диск под соответствующим именем, а затем откомпилируйте его. После того как компиляция выполнится успешно, нажатием клавиши Р7 запустите программу на исполнение в пошаговом режиме с заходом в процедуру QuickS и пронаблюдайте изменения текущих значений переменных I, J, М[I], М[J], First, X, Last. В момент вызова процедуры просматривайте экран пользователя с текущим состоянием сортируемого массива или установите в окне просмотра имя массива М для наблюдения за изменением состояния массива в процессе сортировки.

После первого вызова процедуры QuickS в исходном массиве:

9 11 12 3 19 1 5 17 10 18 3 19 17 9 12 20 20 19 2 5

будет определена его середина (10-й элемент) и переменной X присвоено значение М[10], т. е. 18. После этого массив делится на две части:

19 11 12 3 19 15 17 10 18 и 3 19 17 9 12 20 20 9 2 5

Далее выполняется обмен элементами по следующему правилу: При просмотре левой части массива слева направо выполняется поиск такого элемента массива, что М[I]>Х, затем при просмотре правой части справа налево отыскивается такой элемент, что М[I]<Х. Выполняется обмен местами данных элементов, пока все элементы слева от середины, удовлетворяющие условию М[I]>Х, не будут обменены с элементами, расположенными справа от середины и удовлетворяющими условию М[I]<Х. В результате этого получим массив из двух частей следующего вида:

9 11 12 3 19 1 5 17 10 18 3 19 17 9 12 20 20 19 2 5 Число итераций =1

19 20 12 3 19 1 5 17 10 18 3 19 17 9 12 20 11 9 2 5 Число итераций =2

19 20 20 3 19 1 5 17 10 18 3 19 17 9 12 12 11 9 2 5 Число итераций =3

19 20 20 19 19 1 5 17 10 18 3 3 17 9 12 12 11 9 2 5 Число итераций =4

19 20 20 19 19 18 5 17 10 1 3 3 17 9 12 12 11 9 2 5 Число итераций =5

Далее рекурсивно левая часть в свою очередь дробится на две части, и вызывается процедура для сортировки левой части (с 1-го по 6-й элемент)

20 20 19 19 19 18 5 17 10 1 3 3 17 9 12 12 11 9 2 5 Число итераций =7

20 20 19 19 19 18 5 17 10 1 3 3 17 9 12 12 11 9 2 5 Число итераций =8

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

20 20 19 19 19 18 5 17 10 1 3 3 17 9 12 12 11 9 2 5 Число итераций =9

20 20 19 19 19 18 5 17 10 1 3 3 17 9 12 12 11 9 2 5 Число итераций =10

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

Затем рекурсивно вызывается процедура для аналогичной сортировки правой части (с 7-го по 13-й элемент). Результат последовательных этапов сортировки массива отображается так:

20 20 19 19 19 18 5 17 10 1 3 3 17 9 12 12 11 9 2 5 Число итераций=11

20 20 19 19 19 18 17 17 10 1 3 3 5 9 12 12 11 9 2 5 Число итераций =12

20 20 19 19 19 18 17 17 10 1 3 3 5 9 12 12 11 9 2 5 Число итераций =13

20 20 19 19 19 18 17 17 109 3 3 5 9 12 12 11 1 2 5 Число итераций=14

20 20 19 19 19 18 17 17 10 9 11 3 5 9 12 12 3 1 2 5 Число итераций =15

20 20 19 19 19 18 17 17 10 9 11 12 5 9 12 3 3 1 2 5 Число итераций =16

20 20 19 19 19 18 17 17 109 11 12 12 9 5 3 3 1 2 5 Число итераций=17

20 20 19 19 19 18 17 17 10 9 11 12 12 9 5 3 3 1 2 5 Число итераций=18

20 20 1919 19 18 17 17 12 9 11 12 10 9 5 3 3 1 2 5 Число итераций =19

20 20 19 19 19 18 17 17 12 12 11 9 10 9 5 3 3 1 2 5 Число итераций=20

20 20 19 19 19 18 17 17 12 12 11 9 109 5 3 3 1 2 5 Число итераций=21

20 20 19 19 19 18 17 17 12 12 11 9 10 9 5 3 3 1 2 5 Число итераций =22

20 20 19 19 19 18 17 17 12 12 11 10 9 9 5 3 3 1 2 5 Число итераций=23

20 20 19 19 19 18 17 17 12 12 11 10 9 9 5 5 3 1 2 3 Число итераций=24

20 20 19 19 19 18 17 17 12 12 11 10 9 9 5 5 3 1 2 3 Число итераций =25

2020 19 19 19 18 17 17 12 12 11 109 9 5 5 3 1 2 3 Число итераций =26

20 20 19 19 19 18 17 17 12 12 11 10 9 9 5 5 3 3 2 1 Число итераций =27

По последнему значению A определяем, что для данного массива сортировка по невозрастанию выполняется за 27 итераций.

Как видно из приведенных примеров, алгоритм "быстрой" сортировки дает лучшие результаты, чем пузырьковый метод, однако следует учесть, что в некоторых случаях это преимущество снижается. Например, если применить эту программу для сортировки массива М, элементы которого имеют значения 29,27,24,3,23,19,19,18,1,17,15,13,1,0,9,9,8,6,6,5, то сортировка будет выполнена за 28 итераций, т. е. время процесса и число итераций даже увеличатся, несмотря на то, что исходный массив в большей степени упорядочен, в то время как сортировка линейным методом -- 190 итераций для обоих массивов, пузырьковым -- 166 (для первого массива-- 170).

1.5 БИНАРНЫЙ ПОИСК В УПОРЯДОЧЕННЫХ МАССИВАХ

Едва ли не самой внушительной демонстрацией эффективности применения компьютеров являются задачи, в которых осуществляется поиск информации в некотором списке. Ранее в упражнениях 2 -- 4 мы использовали метод линейного (последовательного) поиска, суть которого заключается в последовательном просмотре всего списка элементов массива и сравнении значения очередного элемента с заданным для поиска. Этот метод поиска вполне эффективен на неупорядоченных массивах данных, а на предварительно отсортированных массивах значительно эффективнее выполнять поиск другими методами. Например, метод линейного поиска практически бесполезен при поиске информации в массивах большого размера, так как занимает много времени.

Одним из эффективных методов поиска в больших отсортированных массивах является бинарный поиск, или поиск методом деления пополам. В основе этого метода лежит идея целенаправленных последовательных догадок о предполагаемом местоположении искомого элемента. Такой метод можно проиллюстрировать на примере шуточного совета, как поймать в Африке льва: "Для начала разделим Африку пополам. Ясно, что лев находится только в одной половине. Та половина, в которой находится лев, снова делится пополам и т. д. Площадь Африки приблизительно 30 млн. км2. Следовательно, после примерно 45 делений мы получим площадку, не превышающую 1 м2. Теперь на такой площадке льва поймать нетрудно".

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

Глава 2. ПРАКТИЧЕСКАЯ ЧАСТЬ

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

program Sort_Lin;

uses

crt;

const

Count=20;

M:array [1..Count] of byte=(9,11,12,3,19,1,5,17,10,18,3,19,17,9, 12,20,20,19,2,5);

var

I, J, N, L: Byte;

A: integer;

begin

ClrScr;

Writeln(`Исходный массив:');

for I:=1 to Count do Write(` `, M[I]); Writeln;

A:=0;

for I:=1 to Count-1 do

for J:=I+1 to Count do

begin

A:=A+1;

if M[I] < M[J] then

begin

N:=M[I];

M[I]:=M[J];

M[J]:=N;

end;

for L:=1 to Count do Write(` `, M[L]); Writeln(`Число итераций=', A);

end;

ReadKey;

end.

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

program Sort_Puz;

uses

crt;

const

Count=10;

M:array [1..Count] of byte=(9, 11, 12, 3, 19, 1, 5, 17, 10, 18);

var

I, J, K, L: Byte;

A: integer;

begin

ClrScr;

Writeln(`Исходный массив');

for I:=1 to Count do Write(M[I], ` `); Writeln;

A:=0;

for I:=2 to Count do

begin

for J:=Count downto I do

begin

A:=A+1;

if M[J-1]<M[J] then

begin

K:=M[J-1];

M[J-1]:=M[J];

M[J]:=K;

for L:=1 to Count do Write(` `, M[L]);

Writeln(`Число итераций =', A);

end;

end;

end;

Readkey;

end.

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

program Quck_sort;

uses Crt;

const Count=20;

M : array [1..Count] of byte=(9, 11, 12, 3, 19, l, 5, 17, 10, 18, 3, 19, 17, 9, 12, 20, 20, 19, 2, 5);

var

I,A: integer;

procedure QuickS(First,Last:integer);

var I,J,X,W,L:integer;

begin

I:=First;

J:=Last;

X:=M[ (First+Last) div 2];

repeat

while M[I]>X do I:=I+1;

while X>M[J] do J:=J-1;

A:=A+1;

if K=J then

begin

W:=M[i];

M[I]:=M[J];

M[J]:=W;

I:=I+1;

J:=J-1;

for L := 1 to Count do WriteC ' ,M[L] );

Writeln ( 'Число итераций=' ,A);

end;

until I>J;

if First<J then QuickS(First, J);

if I<Last then QuickS(I,Last);

end;

begin

ClrScr;

Writeln('Исходный массив:'); Writeln;

for I:=l to Count do Write (M[I]:3,' '); Writeln;

A:=0;

QuickS(1,Count);

Writeln ('Отсортированный массив:'); Writeln;

for I:=l to Count do Write (M[I]:3,' '); Writeln;

end.

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

program Preobr_Mas_2;

uses

Crt;

const Strok=10;

Stolb=Strok;

var

A: array [1. .Strok, 1. .Stolb] of integer;

B, C: array [1. .Strok*6] of integer;

I, J, X,Y: integer;

begin

ClrScr;

Randomize;

for I:= 1 to Strok do

begin

for J:= 1 to Stolb do

begin

A[I, J] :=Random(99) ;

Write (A[ I, J] :2, ' ');

end;

Writeln;

end;

Writeln;

X:= 0;

Y:= 0;

for I:=1 to Strok do

for J:= 1 to Stolb do

if J >=I then

begin

X:= X+1;

B[X] := A[I,J];

end

else

begin

Y:= Y+1;

C[Y] := A[I,J];

end;

Writeln('Элементы расположенные на главной диагонали и выше: ');

for I:=1 to X do Write(B[I]:2,' '); Writeln;

Writeln('Элементы, расположенные ниже главной диагонали: ') ;

for I:=1 to Y do Write(C[I]:2,' '); Writeln;

ReadKey;

end.

ЗАКЛЮЧЕНИЕ

Для реализации различных методов сортировки необходимо применить алгоритмические языки программирования, такие как: Delphi, Pascal. Применение различных языков программирования, в данной курсовой работе, необходимо для понимания самого алгоритма без привязки к лексике языка программирования.

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Абрамов. С.А., Зима Е.В. Начала программирования на языке Паскаль. - М.: Наука, 1987.- 112с.

2. Абрамов С.А., Гнездилова Г.Г., Капустина Е.Н., Селюн М.И. Задачи по программированию. - М.Наука, 1988. - 224 с.

3. Алексеев Е.С., Мячев А.А. Англо-русский толковый словарь по системотехнике ЭВМ. - М.: Финансы и статистика, 1993. - 256 с.

4. Борковский А.Б. Англо-русский словарь по программированию и информатике (с толкованиями). - М.: Русский язык, 1990. - 333 с.

5. Васюкова Н.Д., Тюяева В.В. Практикум по основам программирования. Язык Паскаль: Учеб. пособ. для учащихся средн. спец. уч. завед. М.Высшая школа, 1991.- 160с.

6. Вирт Н. Язык программирования Паскаль // Алгоритмы и организация решения экономических задач.

7. Вирт Н. Алгоритмы + структуры данных = программы: Пер. с англ. - М.: Мир, 1985. - 406 с,

8. Григас Г. Начала программирования: Книга для учащихся : Пер. с лит. / Под ред. Ю.А.Первина. - М.: Просвещение, 1987.-112 с.

9. Грогоно П. Программирование на языке Паскаль : Пер. с англ. - М.: Мир, 1982. -382с.

10. Дагене В.А., Григас Г.К., Аугутис К.Ф. 100 задач по программированию: Кн. для учащихся: Пер. с лит. - М.: Просвещение, 1993. - 255 с.

11. Дал. У., Дейкстра Э., Хоор К. Структурное программирование: Пер. с англ. - М.: Мир, 1975.-247 с.

12. Довгаль С.И., Литвинов Б.Ю., Сбитнев А.И. Персональные ЭВМ: Турбо Паскаль v7.0, Объектное программирование, локальные сети (учебное пособие). - Киев: Информсис-тема сервис, 1993. - 461 с.

13. Информатика: Энциклопедический словарь для начинающих. Сост. Д.А.Поспелов. - М: Педагогика-Пресс, 1994. - 352 с.

14. К.Йенсен, Н.Вирт. Руководство для пользователя и описание языка Паскаль. - М.: Финансы и статистика, 1982. - 150 с.

15. Математический энциклопедический словарь /Гл. ред. Ю.В Прохоров. - М.: Советская энциклопедия, 1988. - 847 с.

16. Нортон П., Уилтон Р. 1ВМ РС РЗ/2. Руководство по программированию: Пер. с англ. - М.: Радио и связь, 1994. - 336 с.

17. Перминов О.Н. Язык программирования Паскаль. - М.: Радио и связь, 1988. - 220 с.

18. Першиков В.И., Савинков В.М. Толковый словарь по информатике. - М.: Финансы и статистика, 1995. - 544 с.

Размещено на Allbest.ru


Подобные документы

  • Работа с массивами, их ввод и вывод, организация программ циклической структуры. Способы описания и использования массивов, алгоритмы их сортировки, сортировка выбором и вставками. Алгоритмы поиска элемента в неупорядоченном и упорядоченном массивах.

    лабораторная работа [14,2 K], добавлен 03.10.2010

  • Понятие алгоритма и сортировки. Способы и алгоритмы сортировки массивов. Быстрая сортировка Хоара. Описание алгоритма "быстрой сортировки". Реализация на языке программирования. Анализ наихудшего разбиения. Вероятностные алгоритмы быстрой сортировки.

    курсовая работа [291,5 K], добавлен 22.03.2012

  • Изучение алгоритмов внутренней сортировки массивов данных, сравнение сложности их реализации и производительности. Отличительные черты сортировки включением, выбором, разделением, сортировки Шелла, обменной сортировки. Сравнение методов: плюсы и минусы.

    курсовая работа [203,8 K], добавлен 03.12.2010

  • Анализ основных алгоритмов внутренней сортировки массивов данных, сравнение сложности их реализации и производительности. Сортировка пузырьком, методами вставок, выбора, методом Шелла, быстрая сортировка. Операция разделения массива внутренней сортировки.

    курсовая работа [161,7 K], добавлен 17.12.2015

  • Обработка массивов элементов любого типа как главное назначение алгоритмов сортировки. Анализ наиболее используемых алгоритмов сортировки: пузырьком, выбором, вставками, методом Шелла и быстрой сортировкой. Основные требования к алгоритмам сортировки.

    реферат [189,8 K], добавлен 06.12.2014

  • Краткое описание языка программирования С++. Алгоритм линейного выбора элемента, методов минимального (максимального) элемента и челночной сортировки. Анализ и разработка приложения, организующего сортировку массива данных пятью методами сортировки.

    реферат [614,8 K], добавлен 12.04.2014

  • Широкое использование компьютерных и информационных технологий. Концепции типов данных. Алгоритмы сортировки одномерных массивов. Описание двумерного массива Паскаля. Методы доступа к элементам массивов. Индексные, динамические и гетерогенные массивы.

    курсовая работа [66,3 K], добавлен 07.12.2010

  • Разработка программ на языке Turbo Pascal на основе использования массивов данных. Особенности хранения данных, способы объявления переменных, действия над элементами массивов, их ввод и вывод. Практическое применение одномерных и многомерных массивов.

    методичка [17,8 K], добавлен 25.11.2010

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

    курсовая работа [300,1 K], добавлен 30.08.2011

  • Изучение понятия и основных видов массивов. Ввод массива с клавиатуры и вывод на экран. Сортировка массивов. Метод простых обменов (пузырьковая сортировка). Сортировка простым выбором и простым включением. Решение задач с использованием массивов Паскаля.

    курсовая работа [82,1 K], добавлен 18.03.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.