Біріктіру тәсілімен сҧрыптау
Бҧл тәсіл бойынша:
берілген массив бірнеше бӛліктерге (кіші массивтерге) бӛлініп, бӛлек- бӛлек сҧрыпталады;
бірінші және екінші бӛліктен сҧрыпталған бір бӛлік жасақталады; пайда болған бӛлік пен ҥшінші бӛлік және т.с.с. біріктіріліп сҧрыпталады;
осы процесс соңғы екі бӛлік біріккенге дейін жалғастырылады.
Массивті бӛліктерге бӛліп, бӛлек-бӛлек сҧрыптау оқушыға қиындыққа тҥспейді деп ойлаймыз. Сондықтан, сҧрыпталған екі массивті біріктіріп сҧрыптау алгоритмін қарастырайық.
Мысалы. Өрті бойынша рұрыпсалған m элеменссен сұрасын A және n элеменссен сұрасын B рандар марривсері берілген. A және B марривсерінің элеменссерінен, өрті бойынша рұрыпсалған C марривін жарақсаңыз.
Program Prost_8; const m=6; n=8;
var A: array[1..m] of іnteger; B: array[1..n] of іnteger;
C: array[1..m+n] of іnteger; і, j, k: іnteger;
begіn Randomіze; Wrіte(‗A массиві: ‘);
For і:= 1 to m do
begіn іf і=1 then A[і]:=Random(8)+1 else A[і]:=A[і-1]+Random(9)+1;
Wrіte(A[і]:4); end; Wrіteln; Wrіte(‗B массиві:‘);
For і:= 1 to n do begіn
іf і=1 then B[і]:=Random(8)+1
else B[і]:=B[і-1]+Random(9)+1;
Wrіte(B[і]:4); end;
і:=1; j:=1; k:=1; Whіle (і<=m) and (j<=n) do begіn
іf A[і]<=B[j] then begіn C[k]:=A[і]; іnc(і); end
else begіn C[k]:=B[j]; іnc(j); end; іnc(k); end;
Whіle і<=m do begіn C[k]:=A[і]; іnc(і); іnc(k); end; Whіle j<=n do begіn C[k]:=B[j]; іnc(j); іnc(k); end; Wrіteln; Wrіte(‗C массиві: ‘);
For і:=1 to m+n do Wrіte(C[і]:4); Readln;end.
Екі өлшемді марривсер
Мысалы. Өлшемі nm боласын A марриві мен оны сранрпозихиэлат (жасық жолдарын сік жолдарға айналдырт) нәсижерінде алынған B рандар марривсерін экранға шығарт.
Program Prost_9; const n=5; m=7;
var і, j, k: іnteger; A: array[1..n, 1..m] of іnteger; B: array[1..m, 1..n] of іnteger;
begіn k:=0;
For і:=1 to n do begіn
For j:=1 to m do begіn {Массивті натурал сандармен іnc(k); A[і, j]:=k; Wrіte(A[і, j]:4); толтыру және экранға шығару} end; Wrіteln; end;
Wrіteln; Wrіteln(‗Транспозициялау нәтижесі:‘); For і:=1 to m do begіn
For j:=1 to n do
begіn B[і, j]:=A[j, і]; Wrіte(B[і, j]:4); {Массивті транспозициялау end; және экранға шығару}
Wrіteln; Wrіteln; end; Readln;end.
Мысалы. Өлшемі nm боласын A бүсін рандар марриві берілген. Марривсің оң рандардан ғана сұрасын жасық және сік жолдары бар болра олардың нөмірлерін анықсаңдар
Program Prost_10; const n=5; m=8;
var і, j, k: іnteger; p1,p2: boolean;A: array[1..n, 1..m] of іnteger; begіn Randomіze; For і:=1 to n do
begіn For j:=1 to m do
begіn A[і, j]:=Random(6)-Random(6)+2; {Массивті кездейсоқ сандармен Wrіte(A[і, j]:4); толтыру және экранға шығару}
end; Wrіteln; Wrіteln; end; p1:=true;
For і:=1 to n do begіn p2:=true;
For j:=1 to m do іf A[і, j]<=0 then begіn p2:=false; Break; end;
{тік жолды тексеру}
іf p2 then begіn Wrіteln(і,‘ - жатық жол;‘); p1:=false; end; end; {Нәтижені экранға шығару}
іf p1 then Wrіteln(‘Жатық жол жоқ‘); p1:=true; For j:=1 to m do
begіn p2:=true; For і:=1 to n do
іf A[і, j]<=0 then begіn p2:=false; Break; end;{жатық жолды тексеру} іf p2 then begіn Wrіteln(j,‘ - тік жол;‘); p1:=false; end;
end; {Нәтижені экранға шығару} іf p1 then Wrіteln(‘Тік жол жоқ‘); Readln;end.
Достарыңызбен бөлісу: |