русс | укр

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

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

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

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


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

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

Сортировка массива- это упорядочение элементов массива по возрастанию или убыванию. Существуют несколько способов сортировки. Мы рассмотрим только два.

Линейная сортировка массива по возрастанию.

Пусть дан массив А(3 8 2 1 7 )

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

Т.О. получим массив: А(1 8 2 3 7 )

Далее будем просматривать массив, начиная со второго элемента. Если найдется элемент меньше второго, то меняем их местами.

Т.О. получим массив: А(1 2 8 3 7 )

Далее будем просматривать массив, начиная с третьего элемента. Если найдется элемент меньше третьего, то меняем их местами.

Т.О. получим массив: А(1 2 3 8 7 )

Продолжаем процедуру, пока не дойдем до элемента под номером N-1, где N-размер массива.

В итоге получим массив А(1 2 3 7 8 ).

Итак, чтобы написать программу на Turbo Pascal нам понадобятся два циклических оператора FOR с параметрами

I-определяет «рабочую часть»

J- для работы в «рабочей части», обращения к каждому элементу

Для того чтобы поменять элементы местами, используем следующий алгоритм:

begin

r:=a[i];

a[i]:=a[j];

a[j]:=r;

end;

Где r- переменная для временного хранения значения a[i];

Для краткости не будем вводить массив с клавиатуры, а объявим его как постоянную.

Текст программы:

Program _;

Uses crt;

Сonst n=5

Type vector=array [1..n] ofinteger;

Const a:vector=(12,8,7,9,0)

Var i,j,r:integer;

Begin

clrscr;

{вывод массива}

for i:= 1 to 5 do write(a[i],' ');

{сортировка методом отбора}

writeln;

for i:=1 to N-1 do

For j:=i+1 to n do

if a[j]<a[i] then

{меняем местами}

begin

r:=a[i];

a[i]:=a[j];

a[j]:=r;

end;

печатаем новый массив}

textcolor(5);

for i:= 1 to 5 do write(a[i],' ');

readln;

End.

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

Это один из самых популярных методов сортировки, основан на том, что в процессе сортировки более «легкие» элементы массива постепенно «всплывают». Особенностью этого метода является сравнения элемента не со всеми, а только с соседними.

Пуст имеем массив А(3 6 5 4 7)

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

Т.О. получаем массив А(3 4 6 5 7)

Далее просматриваем массив, начиная с третьего. И меняем соседние элементы, если правый меньше левого.

Т.О. получаем массив А(3 4 5 6 7)

Продолжаем просматривать массив до последнего элемента.

Чтобы запрограммировать данный алгоритм на Turbo Pascal, используем два цикла FOR, первый с параметром I-отделяет «рабочую часть», второй for j:=…downto… чтобы работать внутри рабочей части, сравнивать соседние элементы. Сам массив опишем как типизированную констану.

Program _;

Uses crt;

Type vector=array [1..5] of byte;

const a:vector=(34,7,1,7,2)

Var i,j,r:integer;

Begin

clrscr;

{вывод массива}

textcolor(15);

for i:= 1 to 5 do write(a[i],' ');

{сортировка методом пузырька}

writeln;

for j:=2 to 5 do

For i:=5 downto j do

if a[i]<a[i-1] then

{меняем местами}

begin

r:=a[i];

a[i]:=a[i-1];

a[i-1]:=r;

end;

{печатаем новый массив}

textcolor(5);

for i:= 1 to 5 do write(a[i],' ');

readln;

End.

Дома:

ü Просмотреть другие методы сортировки. Подготовить доклады. (Каждый!)

ü Повторить задачи лекции 3 по теме «массивы»


Просмотров: 524


Вернуться в оглавление



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


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

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

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


 


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

 
 

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