русс | укр

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

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

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

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


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

Области сортировки элементов матриц


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


 

1 2 3 4

 

5 6 7 8

 

9 10 11 12

 

13 14 15 16

 

17 18 19 20

 


21 22 23 24

 

25 26 27 28

 

29 30 31 32

 

33 34 35 36

 

37 38 39 40

 


Примеры программ

Пример №1

 

Program MetodSort;

{Методы сортировки числовых массивов}

Const

R=10; {Длина числового массива}

Type

TInd=1..R;

TElem=Integer;

TMas=Array[TInd] Of TElem;

 

Procedure SortVibor(n:TInd; Var M:TMas);

{Процедура сортировки массива по возрастанию

методом выбора элементов}

Var

i,k,imin:TInd;

t:TElem;

Begin

For i:=1 To n-1

Do Begin

imin:=i; {Поиск очередного минимума}

For k:=i+1 To n

Do If M[k]<M[imin]

Then imin:=k;

{Перестановка элементов}

t:=M[i];

M[i]:=M[imin];

M[imin]:=t;

End;

End; {SortVibor}

 

Procedure SortObmen(n:TInd; Var M:TMas);

{Процедура сортировки массива по возрастанию

методом обмена элементов}

Var

i,k:TInd;

t:TElem;

Begin

For k:=n DownTo 2

Do For i:=1 To k-1 {Цикл сравнений и обменов}

Do If M[i]>M[i+1] {соседних элементов}

Then Begin {Перестановка элементов}

t:=M[i];

M[i]:=M[i+1];

M[i+1]:=t;

End;

End; {SortObmen}

 

 

Procedure SortObmenF(n:TInd; Var M:TMas);

{Процедура сортировки массива по возрастанию

методом обмена с флагом}

Var

i,k:TInd;

flag:Boolean;

t:TElem;

Begin

k:=n;{Начальное количество не отсортированных элементов}

Repeat

flag:=FALSE; {Нет перестановок}

For i:=1 To k-1

Do If M[i]>M[i+1]

Then Begin {Перестановка элементов}

t:=M[i];

M[i]:=M[i+1];

M[i+1]:=t;

flag:=TRUE; {Была перестановка}



End;

k:=k-1;

Until (Not flag) Or (k=1);

End; {SortObmenF}

 

Procedure SortVstav(n:TInd; Var M:TMas);

{Процедура сортировки массива по возрастанию

методом вставки элементов}

Var

i,j,k:TInd;

t:TElem;

Begin

For i:=2 To n

Do Begin

t:=M[i]; {Выделение текущего элемента}

j:=1;

{Поиск места вставки в отсортированной части}

While (j<i) And (M[j]<=M[i])

Do j:=j+1;

For k:=i-1 DownTo j

Do M[k+1]:=M[k]; {Сдвиг элементов}

M[j]:=t; {Вставка текущего элемента}

End;

End; {SortVstav}

 

Procedure SortQuick(Var a: TMas; l,r: TInd);

{Процедура быстрой сортировки массива по возрастанию}

var

i,j: TInd;

x,y: TElem;

Begin

i:=l; j:=r; x:=a[(l+r) DIV 2];

Repeat

While a[i]<x Do i:=i+1;

While x<a[j] Do j:=j-1;

If i<=j

Then Begin

y:=a[i]; a[i]:=a[j]; a[j]:=y;

i:=i+1; j:=j-1;

End;

Until i>j;

If l<j Then SortQuick(a,l,j);

If i<r Then SortQuick(a,i,r);

End;{SortQuick}

 

Procedure OutMas(n:Tind; name:String; Var M:Tmas);

 

{Процедура вывода массива с именем}

Var

i:Tind;

Begin

Write('Числовой массив ',name,': ');

For i:=1 To n

Do Write(M[i]:3);

WriteLn;

End; { OutMas }

 

Const

MasA:Tmas= (10, 9, 8, 7, 6, 5, 4, 3, 2, 1);

MasB:Tmas= (19,17,15,13,11, 9, 7, 5, 3, 1);

MasC:Tmas= (20,18,16,14,12,10, 8, 6, 4, 2);

MasD:Tmas= ( 1,10, 2, 9, 3, 8, 4, 7, 5, 6);

MasE:TMas= ( 2, 9, 4,10, 7, 1, 6, 5, 3, 8);

Begin

ClrScr;

SortVibor(R,MasA); OutMas(R,'MasA',MasA);

SortObmen(R,MasB); OutMas(R,'MasB',MasB);

SortObmenF(R,MasC); OutMas(R,'MasC',MasC);

SortVstav(R,MasD); OutMas(R,'MasD',MasD);

SortQuick(MasE,1,R); OutMas(R,'MasE',MasE);

ReadLn;

End.

 


Пример №2

 

Program SortStrMatr;

{Сортировка строк матрицы по главному столбцу.

Главный столбец матрицы – это столбец с минимальным элементом}

Uses Crt; {Подключение модуля}

Const

R=10;

Type

TInd= 1..R;

TElem= Integer;

TVect= Array[TInd] of TElem;

TMatr= Array[TInd] of TVect;

{$R+}

Procedure InMatr(kstr,kstb:TInd;Var M:TMatr);

{Процедура ввода матрицы}

Var

i,j:TInd;

Begin

Writeln('Вводите матрицу по строкам:');

For i:=1 To kstr

Do Begin

For j:=1 To kstb

Do Read(M[i,j]);

ReadLn;

End;

End;{InMatr}

 

Function NStbMin(kstr,kstb:TInd; Const M:TMatr):TInd;

{Функция определения номера столбца с минимальным элементом}

Var

i,j:TInd;

min:TElem;

Begin

min:=M[1,1];

NStbMin:=1;

For i:=1 To kstr

Do For j:=1 To kstb

Do If M[i,j]<min

Then Begin

min:=M[i,j];

NStbMin:=j;

End;

End;{NStbMin}

 

Procedure SortMatr(kstr,nstb:TInd; Var M:TMatr);

{Процедура сортировки строк матрицы методом выбора}

Var

i,k,imax:TInd;

StrM:TVect;

Begin

For i:=1 To kstr-1

Do Begin

imax:=i;

For k:=i+1 To kstr

Do If M[k,nstb]>M[imax,nstb]

Then imax:=k;

StrM:=M[i];

M[i]:=M[imax];

M[imax]:=StrM;

End;

End;{SortMatr}

 

Procedure Okno(x1,y1,x2,y2,cf,ct:Byte);

{Процедура формирования окна на экране}

Begin

Window(x1,y1,x2,y2); {Установка параметров окна}

TextBackGround(cf); {Установка цвета фона}

TextColor(ct); {Установка цвета текста}

ClrScr; {Очистка окна}

End;{Okno}

 

Procedure OutMatr(kstr,kstb:TInd; Const M:TMatr);

{Процедура вывода матрицы}

Var

i,j:TInd;

Begin

For i:=1 To kstr

Do Begin

For j:=1 To kstb

Do Write(M[i,j]:4);

WriteLn;

End;

End;{OutMatr}

 

Var

N,M,NStb:TInd;

Matr:TMatr;

Begin

Okno(1,1,80,25,0,15); {На черном фоне белый текст}

Write('Размеры матрицы? ');

ReadLn(N,M);

Okno(1,6,38,20,2,15); {На зеленом фоне белый текст}

InMatr(N,M,Matr); {Ввод матрицы}

NStb:=NStbMin(N,M,Matr);{Поиск главного столбца}

SortMatr(N,NStb,Matr); {Сортировка строк}

Okno(40,6,80,20,3,15); {На голубом фоне белый текст}

WriteLn('Отсортированная матрица');

OutMatr(N,M,Matr);

ReadLn;

End.

 




<== предыдущая лекция | следующая лекция ==>
Методы сортировки | Текстовые файлы


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


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

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

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


 


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

 
 

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

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