- •Екі өлшемді массивтерді өңдеудің типтік алгоритмдері. «Көбік» әдісімен сұрыптау
- •Массивті түгел өңдеу
- •Массивті оның бағандары бойынша өңдеу алгоритмдері:
- •Екі өлшемді массивтерді диагоналдарға қатысты өңдеу алгоритмдері
- •Квадрат матрицаны диагоналдарға қатысты өңдеу (тиімді айналым)
- •«Көбік» әдісімен сұрыптау
- •Сурет 4.1- «Көбікті» сұрыптау
- •Сұрыптау әдістерін қолдануға мысалдар
- •Сұрыптау есептерінің ішінде массив элементтерінің бір бөлігін өсу ретімен және екінші бөлігін кему ретімен сұрыптау қажеттілігі жиі кездеседі.
- •Сурет 4.2
- •Сурет 4.3
Сұрыптау есептерінің ішінде массив элементтерінің бір бөлігін өсу ретімен және екінші бөлігін кему ретімен сұрыптау қажеттілігі жиі кездеседі.
5-мысал. Массив бөліктерін сұрыптау керек. Оң және теріс элементтері бар А массиві берілсін делік (4.2-сурет). Массивтің оң элементтері өсу реті бойынша сұрыпталып, ал теріс элементтерін өз орнында қалдыру керек.
Сурет 4.2
Есепті шешу идеясы:
Қосымша В массивін енгіземіз және оған А массивіндегі оң элементтерді жазамыз (4.3-сурет):
|
1 |
2 |
3 |
4 |
5 |
В |
2 |
5 |
7 |
8 |
9 |
Сурет 4.3
Содан соң массивті өңдеудің типтік алгоритімін қолдану арқылы, A массивінің элементтерінің индексі ретінде В массивінің элементтерін қолданамыз. Бұл есептің шығарылуын бөлек типтік алгоритм ретінде қарастыруға болады.
const m=10;
var a, b: array [1..m] of integer;
i, j, n, x, k: integer;
begin
writeln('Элементтер саны:');
readln(n);
for i:=1 to n do
begin write('a[',i,']='); readln(a[i]); end;
j:=1; k:=0;
for i:=1 to n do
if a[i]>0 then
begin
b[j]:=i;
j:=j+1;
k:=k+1;
end;
for j:=k downto 2 do
for i:=1 to j-1 do
if a[b[i]]>a[b[i+1]] then
begin
x:=a[b[i]];
a[b[i]]:=a[b[i+1]];
a[b[i+1]]:=x;
end;
for i:=1 to n do
write (a[i],' ');
end.
Тест:
-
Берілгені:
N=9
-3, 5, -1, 3, 6, -8, 2, -1, -3
Нәтижесі:
-3, 2, -1, 3, 5, -8, 6, -1, -3
Қорытынды
Біртекті массивтерді сұрыптаудың «Көбікті» әдісі екі көрші элементті салыстыруға негізделген: егер үлкен элемен кішісінің сол жағында болса, онда элементтердің орындары ауыстырылады. Массив элементінің ең үлкені массивтің ең соңына орналасады. Әрі қарай алгоритм бірінші элементтен соңғы элементке дейін қайталанады.
Массивтің бөліктерін сұрыптауда (Сұрыптаудың шарттары бойынша массив бөліктерін таңдаймыз) сұрыпталатын индекстер ретінде А массивіндегі элементтерді және қосымша В массивіндегі элементтерді аламыз ( онда таңдалатын массивтің бастапқы элементтері сақталады).
Сұрақтар.
«Көбікті» сұрыптаудың бірінші қадамында не болады?
«Көбікті» сұрыптау әдісіндегі ішкі циклдың санауын сыртқы циклдың санауына тәуелділігін анықтаңдар?
Тапсырмалар
Символды жол сандардан және латын әріптерінен тұрады. Олардың әрқайсысы өз орнында қалатындай етіп сандарды кему реті бойынша, әріптерді алфавиттік тәртіп бойынша реттеу керек.
Натурал сандардан тұратын массив берілген, ондағы жай сандарды өсу ретімен, ал құрама сандарды кему ретімен сұрыптау керек.
Сөйлемдегі дауысты дыбыстарды алфавит тәртіппен өсу реті бойынша, ал дауыссыз дыбыстарды кему реті бойынша орналастыру керек.
Сөйлемдегі сөздердің орнын алфавиттік тәртіппен (әрбір сөздегі бірінші әріп бойынша) орналастыру қажет.
