Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Сортировка с определением номера элемента

Автор: -Fly- 21.01.2008 18:49

Привет!

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

1. Создать массив N=10 заполнить буквами a e r t d w t z, используя метод прямого выбора определить на каждом шаге
в методе прямого выбора номера перемещаемых элементов

2. Создать массив N=10 заполнить буквами a e r t d w t z используя шейкерную сортировку определить на каждом шаге
в методе шейкерной сортировки левую и правую границы сортируемой части массива (L и R).

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

Код

var a: array[1..10] of char;
    j,tmp: char;
    i,n,m:integer;


begin
n:='10';
a[1]:='a';
a[2]:='e';
a[3]:='r';
a[4]:='t';
a[5]:='d';
a[6]:='w';
a[7]:='t';
a[8]:='z';
a[9]:='y';
a[10]:='q';
for i:=1 to n do
write(a[i]:5);
for i:=1 to N-1 do
begin
m:=i;
for j:=i+1 to N do begin
if a[j]<a[m] then
m:=j;
end;
if m<>i then begin
tmp:=a[m];
a[m]:=a[i];
a[i]:=tmp;
end;
End.


//Это к 2му заданию проблемы с ним те же
Код

var a: array[1..10] of char;
    var i,j,k,l,r,x: integer;


begin
n:='10';
a[1]:='a';
a[2]:='e';
a[3]:='r';
a[4]:='t';
a[5]:='d';
a[6]:='w';
a[7]:='t';
a[8]:='z';
a[9]:='y';
a[10]:='q';
for i:=1 to n do
write(a[i]:5);
begin
l:=2;
r:=n;
k:=n;
repeat
for j:=r downto l do begin
if a[j-1]>a[j] then begin
x:=a[j-1];
a[j-1]:=a[j];
a[j]:=x;
k:=j;
end;
end;
l:=k+1;
for j:=l to r do begin
if a[j-1]>a[j] then begin
x:=a[j-1];
a[j-1]:=a[j];
a[j]:=x;
k:=j;
end;
end;
r:=k-1;
until l>r;
end;
End.