- •Сортировка элементов массива методом выбора на языке программирования Pascal.
- •Сортировка элементов массива методом вставки на языке программирования Pascal
- •Исходный код программ на языке программирования Pascal, сортировка выбором, вставкой, пузырьковая, слиянием, шейкерная. Краткое описание алгоритмов
- •Двоичный (бинарный) поиск
- •Динамические структуры. Линейный и двунаправленный список в языке программирования pascal. Описание, формирование, добавление и просмотр
- •Деревья на языке программирования pascal.
Сортировка элементов массива методом выбора на языке программирования Pascal.
program sort_vibor;
uses crt;
const n=10;
x:array [1..n] of integer=(25,11,-8,0,99,25,0,19,14,-17);
var
i,j,nmin:byte;
min:integer;
begin clrscr;
writeln('ich massiv:');
for i:=1 to n do write (x[i]:6);
writeln;
for j:=1 to n-1 do
begin
min:=x[j];
nmin:=j;
for i:=j+1 to n do
if x[i]<min
then begin
min:=x[i];
nmin:=i;
end;
x[nmin]:=x[j];
x[j]:=min;
end;
writeln('ich massiv:');
for i:=1 to n do write (x[i]:6);
readln;
end.
Сортировка элементов массива методом вставки на языке программирования Pascal
program vstavka;
uses crt;
const n=10;
arr:array [1..n] of real=(25,11,-8,0,99,25,0,19,14,-17);
var i,j:byte;
procedure InsertionSort(var Arr : array of Real; N : Integer);
var
I : Integer;
J : Integer;
K : Integer;
Tmp : Real;
begin
dec(N);
i:=1;
repeat
j:=0;
repeat
if Arr[i]<=Arr[j] then
begin
k:=i;
Tmp:=Arr[i];
repeat
Arr[k]:=Arr[k-1];
dec(k);
until not(k>j);
Arr[j]:=Tmp;
j:=i;
end;
else inc(j);
until not(j<i);
inc(i);
until not(i<=n);
end;
begin
clrscr;
writeln ('massiv');
for i:=1 to n do
writeln (arr[i]:2:2);
writeln ('otsortirovannii massiv');
InsertionSort (arr,n);
for i:=1 to n do
writeln (arr[i]:2:2);
readln;
end.
Исходный код программ на языке программирования Pascal, сортировка выбором, вставкой, пузырьковая, слиянием, шейкерная. Краткое описание алгоритмов
Сортировка методом вставки. Алгоритм и программа на языке Pascal
Массив разделяется на 2 части – отсортированную и не отсортированную. Элементы из не отсортированной части поочередно выбираются и вставляются в отсортированную часть так.
Чтобы не нарушить в ней упорядоченность элементов. Сначала в отсортированном массиве находится только первый элемент. Следующий элемент присваивается переменной
programsort_vstavka;
usescrt;
constn=10; x:array[1..n] of integer=(25,11,-8,0,99,25,0,19,14,-17);
var i,j,k:byte; a:integer;
begin clrscr;
writeln ('ish massiv:');
for i:=1 to n do
write (x [i]:6);
writeln;
for i:=2 to n do
begin
a:=x[i];
j:=1;
while a>x[j] do j:=j+1;
for k:=i-1 downto j do x[k+1]:=x[k];
x[j]:=a;
end;
writeln ('otsort masiv:');
for i:=1 to n do write (x[i]:6);
readln;
end.
Пузырьковая сортировка. Алгоритм и программа на языке Pascal
Элемент списка последовательно сравниваются между собой и меняются местами в том случае, если предшествующий элемент больше последующего.
program sort_puzir;
uses crt;
const n=10;
x:array [1..n] of integer=(25,11,-8,0,99,25,0,19,14,-17);
var i,j:byte;
a:integer;
begin
clrscr;
writeln ('ish massiv:');
for i:=1 to n do write (x[i]:6);
writeln;
for j:=n downto 2 do
for i:=1 to j-1 do
if x[i]>x[i+1]
then begin
a:=x[i];
x[i]:=x[i+1];
x[i+1]:=a;
end;
writeln ('ots massiv:');
for i:=1 to n do write (x[i]:6);
readln;
end.
Сортировка выбором. Алгоритм и программа на языке Pascal
Сначала в неупорядоченном списке выбирается и отделяется от остальных наименьший элемент. Исходный список оказывается измененным. Измененный список принимается за исходный и процесс продолжается до тех пор, пока все элементы не будут выбраны. Выбранные элементы образуют упорядоченный список.
programsort_vibor;
usescrt;
constn=10;
x:array[1..n] ofinteger=(25,11,-8,0,99,25,0,19,14,-17);
var i,j,nmin:byte;
min:integer;
begin
clrscr;
writeln('ich massiv:');
for i:=1 to n do write (x[i]:6);
writeln;
for j:=1 to n-1 do
begin
min:=x[j];
nmin:=j;
for i:=j+1 to n do
if x[i]<min then begin
min:=x[i];
nmin:=i;
end;
x[nmin]:=x[j];
x[j]:=min;
end;
writeln('ich massiv:');
for i:=1 to n do write (x[i]:6);
readln;
end.
Сортировка слиянием. Алгоритм и программа на языке Pascal
Сначала анализируются первые элементы обоих массивов. Меньший элемент переписывается в новый массив, а оставшийся последовательно сравнивается с элементами из другого массива. В новый массив после каждого сравнения попадает меньший элемент. Так продолжается до исчерпания элемента одного из массивов. Затем остаток другого массива записывает в новый массив.
program Sliyanie;
uses crt;
var a,b,c:array[1..500] of integer;
n,m,i,j,k:integer;
begin
clrscr;
write('n=');readln(n);
write('m=');readln(m);
writeln('Massiv A:');
for i:=1 to n do
begin
a[i]:=2*i+1;
write(a[i],' ');
end;
writeln;
writeln('Massiv B:');
for i:=1 to m do
begin
b[i]:=2*i;
write(b[i],' ');
end;
writeln;
i:=1; j:=1; k:=1;
while (i<=n) or (j<=m) do
begin
if (i<=n) and (j<=m) then
begin
if a[i]<b[j] then
begin
c[k]:= a[i];
inc (i);
inc (k);
end
else
begin
c[k]:= b[j];
inc (j);
inc (k);
end
end
else if j>m then
begin
c[k]:= a[i];
inc (i);
inc (k);
end
else if i>n then
begin
c[k]:= b[j];
inc (j);
inc (k);
end;
end;
writeln('Massiv C:');
for i:=1 to m+n do
write(c[i],' ');
readln
end.
Шейкерная сортировка. Алгоритм и программа на языке Pascal
Сравниваются не соседние элементы, а расположенные на расстоянии d=[n/2], где d– шаг между сравниваемыми элементами, а [] – целая часть числа. После каждого просмотра d уменьшается вдвое. На последнем просмотре d=1.
programShakerSort;
constlim= 50;
typeT= Integer;
Vector = array[1..lim] of T;
Var i, N, L, R, p : Byte;
tmp: T;
flag: Boolean;
a: Vector;
Begin
Readln(N);
For i:=1 to N do Begin
Readln(a[i]);
End;
L:=1; R:=N;
Repeat
flag:=true;
For i:=L to R-1 do Begin
If a[i] > a[i+1] then Begin
tmp:=a[i]; a[i]:=a[i+1]; a[i+1]:=tmp;
p:=i;
flag:= false;
End;
End;
R:=p;
For i:=R-1 downto L do Begin
If a[i] > a[i+1] then Begin
tmp:=a[i]; a[i]:=a[i+1]; a[i+1]:=tmp;
p:=i;
flag:=false;
End;
End;
L:=p+1;
until flag;
Write('Результатсортировки:');
For i:=1 to n do Begin
Write(a[i],' ')
End;
End.