- •1. Ақпараттық іздеудің қарапайым есебі
- •3.Бинарлы ағашты симметриялы ретпен айналу.
- •4.Бинарлы ағашты тура ретпен айналу.
- •5.Бинарлы ағашты кері ретпен айналу.
- •6.Avl ағашта сол жақ және оң жақ бұрылыс операциялары.
- •7. Ықтималды іздеу ағашы.
- •8.Бинарлы іздеу ағашының элементтерін жою.
- •9.Қызыл-қара ағаш және оның ерекшеліктері.
- •Қызыл-қара ағаштың биіктігі
- •Операциялар.
- •Қызыл-қара ағаштың артықшылығы..
- •10.Бинарлы ағаш тұрғызу алгоритмі және олардың арнайы ерекшеліктері.
- •11.Толықтау бинарлы ағаш.
- •12.Бинарлы ағаштың көрсетілуі.
- •13.Іздеу бинарлы ағашынан элементті жою
- •14.O(n log2n) күрделілігімен сұрыптау.
- •15.O(n2) күрделілігімен сұрыптау.
- •16.Бинарлы ағаштармен жасалатын стандарты операциялар.
- •17.Бинарлы ағаштар және оның қолдануы.
- •18.Бинарлы ағашта кесте құру және оның ерекшеліктері.
- •20.Шелл сұрыптауы (Shell_sort) және оның ерекшеліктері.
- •21.Quick_sort сұрыптауы оның ерекшеліктері.
- •22.Пирамидалы сұрыптау алгоритмі (Heap_sort) ж/е оның ерекшелік/і.
- •23.Newman_sort және оның ерекшеліктері.
- •24.Экстремальды қасиет/і бар бинарлы ағаштың арнайы ішкі класс/ы.
- •25.Бинарлы ағаштар қолданыстары және жалпылаулары.
- •26.Квадраттық xештеу.
- •27.Avl ағаштары.
- •28.Стек
- •29.Сызықты хештеу.
- •30.Қос хештеу.
23.Newman_sort және оның ерекшеліктері.
Тоғыстырып
сұрыптау.
Шапшаң сұрыптау алгоритмдердің тағы
бір өкілі – тоғыстырып сұрыптайтын
алгоритмді атауға болады. Ондай
алгоритмдер жеткілікті дәрежеде жоғары
шапшаңдықты , алайда бір ерекшелігі
қосымша О (n) –ға жуық жад ұяшықтарын
талап етеді. Тоғыстырып сұрыптайтын
алгоритмдер екі реттелген массивті
тоғыстыру алгоритмдерінен туындаған,
сондықтан алдымен осы алгоритмнің
идеясын қарастырған жөн болады. Екі
реттелген массив берілсін. А массивінің
өлшемі n болсын, B массивінің өлшемі
m-ге тең болсын.Осы екі массивті
тоғыстырайық. Тоғысқанда сұрыпталған
массивті түзуіміз қажет. Тоғысқан
массивті С деп белгілейік, өлшемі n+m
тең. С массивінің элементтерін с= min
(a,b), мұнда а
А,
b
B
ережесімен тағайындайық. Егер А мен B
массивінің өлшемі екіншісінен көп
болса, онда калдық элементтер С массивінің
бос ұяшықтарына жазылуы тиіс. Бұл
алгоритмнің орташа салыстыру саны min
(n,m)+1 мәніне жақын болады.Алгоритмнің
программалық нұсқасын көрсетейік.
Procedure merge ( a,m,b,n,c);
…
Begin i:=1; j:=1;
For k:=1 to n+m do
Begin if i>n then goto N;
If j>m then goto M;
If a[i]<b[j] then
M: begin c[k]:=a[i]; i:=i+1; end
Else
N: begin c[k]:=b[j]; j:=j+1; end
End
End
Итерациялы тоғыстырып сұрыптау. N өлшемді массивті өлшемі 1-ге тең n ішкі массивке бөледі, бөлінген массивтер бірінші этапта өлшемі 2-ге тең реттелген массив құрып тоғысады. Қалған этаптарды осылайша жалғастырып, нәтижесінде тоғыстырылып сұрыпталған n өлшемді массив құрады. Массивті сұрыптауға кеткен этаптар саны [ log,n]+1 тең. Егер әр этапта n-нен артық емес салыстыру қажет болса, онда массивті сұрыптауға қажет салыстыру мен алмастыру саны nxlog2n тең болады. Бұл баға элементтерді жұптап салыстыруға негізделген процедуралар үшін теориялық күрделіліктің төменгі шегі болып табылады.
Итерациялық тоғыстырып сұрыптау алгоритмдерін алмастыру санын кеміту арқылы шапшаңдатуға болады,яғни берілген массивте алгоритмнің жұмысы басталмай тұрып сұрыпталған ішкі массивтер болуы және тіпті оларың кейбіреулері бір элементтен ғана тұруы мүмкін. Мұндай жағдайда сұрыпталған бөліктердің өлшемдері үлкендерін тоғыстыра отырып процедураны шапшаңдатуға болады. Newmansort алгоритмінің программалық нұсқасы:
Procedure Neumannsort ( a,b,n,z);
begin…
Procedure P ( a,b,n,k);
Begin…
I:=1; k:=1; d:=1; j:=n; s:=n;
K:
L:
if
then
go to if
then
Q else
N;
If
then
go to
M;
If a[i]<a[j] then
M: begin b[k]:=a[i]; i:=i+1;
If a[i]<a[i-1] then := true and else
N: begin b[k]:=a[j]; j:=j-1;
If a[j]<a[j+1] then :=true; end else
K:=k+d; go to if i≤j then L else R;
Q: r:=k; k:=s; s:=r; d:=-d; go to K;
R: end P;
A: P( a,b,n,k);
If k>n then z:=false
Else begin P ( b,a,n,k);
If k>n then z:=true
Else go to A; end;
End Newman sort
4,9,16,15,19,6,14,20,8,1 массивінің негізінде Newmansort процедурасын бейнелейтін мысал қосымша түсініктеме беруді қажет етпейді:
Мысал:
1-ші қадам 1,4,8,9,16,20,6,19,15,14
2-ші қадам 1,4,8,9,14,15,16,19,20,6
3-ші қадам 1,4,6,8,9,14,15,16,19,20
