100
Шейкерлік сҧрыптау.
Кӛпіршік сҧрыптау алгоритмін жақсарту тәсілі –
қандай да бір жҥріс процесінде ауыстырулар болды ма, болмады ма соны
сақтап отыру болып табылады. Егер соңғы жҥрісте ауыстырулар болмаса, онда
алгоритмді аяқтауға болады. Алайда, егер ауыстырулар болғандығы туралы
фактыны ғана сақтап қоймай, сонымен қатар соңғы ауыстыру орнын (индексін)
да сақтаса бҧл жақсартуды тағы да жақсартуға болады. Осы k индексінен
жоғары орналасқан барлық кӛрші элементтердің жҧптары керекті ретпен
орналасқан. Сондықтан қарастыруды осы индекспен аяқтауға болады. Алдын
ала анықталған i-дің тӛменгі шегіне дейін жетпей-ақ қарастыруды осы k
индекімен аяқтауға болады. Ҥшінші жақсарту: тізбектеп қарастырулардың
бағытын алмастыру. Осылайша алынған алгоритм «
шейкерлік
»
сұрыптау
(ShakerSort) деп аталады.
Шейкерлік сҧрыптау мысалы
L =
2
3
3
4
4
R =
8
8
7
7
4
Dir =
44 06
06
06
06
55 44
44
12
12
12 55
12
44
18
94 12
42
18
42
18 94
18
55
55
06 18
67
67
67
67 67
94
94
94
PROCEDURE ShakerSort;
VAR j, k, L, R, x: integer;
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; { ShakerSort}
Достарыңызбен бөлісу: