- •Екі өлшемді массивтерді өңдеудің типтік алгоритмдері. «Көбік» әдісімен сұрыптау
- •Массивті түгел өңдеу
- •Массивті оның бағандары бойынша өңдеу алгоритмдері:
- •Екі өлшемді массивтерді диагоналдарға қатысты өңдеу алгоритмдері
- •Квадрат матрицаны диагоналдарға қатысты өңдеу (тиімді айналым)
- •«Көбік» әдісімен сұрыптау
- •Сурет 4.1- «Көбікті» сұрыптау
- •Сұрыптау әдістерін қолдануға мысалдар
- •Сұрыптау есептерінің ішінде массив элементтерінің бір бөлігін өсу ретімен және екінші бөлігін кему ретімен сұрыптау қажеттілігі жиі кездеседі.
- •Сурет 4.2
- •Сурет 4.3
Массивті оның бағандары бойынша өңдеу алгоритмдері:
7.3-кесте |
||
Типтік алгоритм |
Бейсик тілінде |
Паскаль тілінде |
Әр бағандағы элементтердің қосындысы |
for j=1 to m for i=1 to n s(j)=s(j)+x(i,j) next i next j for j=1 to m print s(j) next |
… for j:=1 to m do s[j]:=0; for j:=1 to m do for i:=1 to n do s[j]:=s[j]+x[i,j]; for j:=1 to m do write (s[j]); |
Әр бағандағы элементтердің көбейтіндісі |
for j=1 to m p(j)=1 next for j=1 to m for i=1 to n p(j)=p(j)*x(i,j) next i next j for j=1 to m print p(j) next |
… for j:=1 to m do p[j]:=1; for j:=1 to m do for i:=1 to n do p[j]:=p[j]*x[i,j]; for j:=1 to m do write (p[j]); … |
Әр бағандағы максимум (минимум) элемент |
for j= 1 to m max(j)=x(i,1) next for j=1 to m for i=1 to n if x(i,j)>max(j) then max(j)=x(i,j) next i,j for j=1 to m print max(j);" "; next for j=1 to m print min(j);" "; next |
for j:= 1 to m do begin max[j]:=x[i,1]; min[j]:=x[i,1]; end; for j:=1 to m do for i:=1 to n do begin if x[i,j]>max[j] then max[j]:=x[i,j] if x[i,j]<min[j] then min[j]:=x[i,j] end; for j:=1 to m do write (max[j]); writeln; for j:=1 to m do write (min[j]); |
Әр бағандағы шарт бойынша таңдау (іздеу) |
for j=1 to m for i=1 to n if {усл.} then {rez(i)=…} next i next j for j=1 to m print rez(j);" "; next |
… for j:= 1 to m do rez[j]:=0; for j:=1 to m do for i:=1 to n do if {усл.} then {rez[i]:=…}; for j:=1 to m do write (rez[j]); |
Екі өлшемді массивтерді диагоналдарға қатысты өңдеу алгоритмдері
Е
гер
екі өлшемді массивте қатарлар мен
бағандар саны бірдей болса, оны квадрат
массив деп атайды. Квадрат массивтерге
арналған тиіптік алгоритмдер оны
диагоналдарға қатысты өңдеуге мүмкіндік
береді. Қосымша диагонал элементтерінің
индекстері 1-зертханалық жұмыстағы 1-ші
тәуелділік бойынша оп-оңай анықталады
(элемент қатарының нөмірі өседі, ал
баған нөмірі кемиді).
Сурет 7.1-Квадрат массивтің диагоналдары
Бас диагонал. Келесі кестеде квадрат массивтің бас диагоналына қатысты типтік алгоритмдер келтірілген:
7.4-кесте |
||
Типтік алгоритм |
Бейсик тілінде |
Паскаль тілінде |
Бас диагоналдағы элементтер қосындысы |
for i=1 to n s=s+x(i,i) next i |
s:=0; for i:=1 to n do s:=s+x[i,i]; |
Бас диагоналдан жоғары орналасқан элементтер қосындысы |
… for i=1 to n for j=1 to n if i<j then s=s+x(i,j) next j, i … |
… s:=0; for i:=1 to n do for j:=1 to n do if i<j then s:=s+x[i,j]; … |
Бас диагоналдан төмен орналасқан элементтер қосындысы |
for i=1 to n for j=1 to n if i>j then s=s+x(i,j) next j i |
s:=0; for i:=1 to n do for j:=1 to n do if i>j then s:=s+x[i,j]; |
Қосымша диагонал. Келесі кестеде квадрат массивтің қосымша диагоналына қатысты типтік алгоритмдер келтірілген:
7.5-кесте |
||
Типтік алгоритм |
Бейсик тілінде |
Паскаль тілінде |
Қосымша диагоналдағы элементтер қосындысы |
for i=1 to n s=s+x(i, n-i+1) next i |
s:=0; for i:=1 to n do s:=s+x[i, n-i+1]; |
Қосымша диагоналдан жоғары орналасқан элементтер қосындысы |
… for i=1 to n for j=1 to n if (i<n-j+1) then s=s+x(i,j) next j, i |
s:=0; for i:=1 to n do for j:=1 to n do if (i<n-j+1) then s:=s+x[i,j]; |
Қосымша диагоналдан төмен орналасқан элементтер қосындысы |
for i=1 to n for j=1 to n if (i>n-j+1) then s=s+x(i,j) next j, i |
s:=0; for i:=1 to n do for j:=1 to n do if (i>n-j+1) then s:=s+x[i,j]; |
