Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АЯП лекции.doc
Скачиваний:
12
Добавлен:
03.12.2018
Размер:
634.37 Кб
Скачать

Сортировка бинарными включениями.

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

При использовании алгоритма бинарного поиска не рассматривается вся последовательность относительно текущего элемента. Она делится пополам, и относительно этого среднего элемента дальнейший поиск происходит в левой или правой части последовательности.

procedure sort2;

var i,j,l,r,m:integer; x:real;

begin

for i:=2 to n do

begin x:=a[i]; l:=1; r:=i-1;

while l < = r do

begin m:=(l+r)div2;

if x < a[m] then r :=m-1

else l:=m+1;

for j:=i-1 downto l do

a[j+1]:=a[j];

a[l]:=x;

end;end;

x=a[i]

l=1

r=i-1

m=(l+r)dw2

l=m+1

r=m-1

a[j+1]=a[j]

a[1]=x

Сортировка простых выборов.

На первом шаге выбирается минимальный элемент из массива и меняется местами с первым элементом. На втором шаге из остатка массива (без первого элемента) опять выбирается минимальное значение и обменивается местами со вторым элементом и т.д.

procedure sort3;

var i,j,k:integer; x:real;

begin

for i:=1 to n-1 do

begin k:=i; x:=a[i];

f

k = i

a[k]=a[i]

a[i]=x

or j:=i+1 to n do

if a[j] < x then begin

k

x=a[i]

:=j; x:=a[j];end;

a[k]:=a[j];

a[k]:=a[i];

a[i]:=x;

end; end;

k=i

x=a[j]

Сортировки простым обменом.

44 06 06 06 06 06 06 06

55 44 12 12 12 12 12 12

12 55 44 18 18 18 18 18

42 12 55 44 42 42 42 42

94 42 42 55 44 44 44 44

18 94 94 42 55 55 55 55

06 18 18 94 67 67 67 67

67 67 67 67 94 94 94 94

procedure sort4;

var i,j:integer; x:real;

begin

for j:=n downto i do

if a[j-1] > a[j] then

begin x:=a[j-1];

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

a[j]:=x; end;

end;end;

x=a[j-1]

a[j-1]=a[j]

a[j]=x

Шейкер-сортировка.

Усовершенствование: на четных шагах легкие элементы всплывают, на нечетных тяжелые элементы тонут.

44 06 06 06 06 06

55 44 44 12 12 12

12 55 12 44 18 18

42 12 42 18 44 42

94 42 55 42 42 44

18 94 18 55 55 55

06 18 67 67 67 67

67 67 94 94 94 94

procedure sort5;

var j,k,l,r:integer; x:real;

begin l:=2; r:=n; k:=n;

repeat

for j:=r downto l do

if a[j-1] > a[j] then

begin x:=a[j-1]; a[j-1]:=a[j];

a[j]:=x; k:=j; end;

l:=k+1;

for j =l to r do

if a[j-1] > a[j] then

begin

x:=a[j-1];

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

a[j]:=x;

k:=j;

end; r:=k-1;

until l > r;

end;

L=2

R=N

K=N

X=A[J-1]

A[J-1]=A[J]

A[J]=X

K=J

R=K-1

L=K+1

X=A[J-1]

A[J-1]=A[J]

A[J]=X

K=J

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]