Lecture8

33
10/13/12 1 А ëãîðèòìèéí ¿íäýñ Ëåêö ¹8

Transcript of Lecture8

10/13/12 1

Аëãîðèòìèéí ¿íäýñ

Ëåêö ¹8

10/13/12 2

Àãóóëãà

1.Íýã õýìæýýñò õ¿ñíýãò2.Îëîí õýìæýýñò õ¿ñíýãò

10/13/12 3

Õ¿ñíýãò áà ò¿¿íèéã áîëîâñðóóëàõ

•Íýã õýìæýýñò õ¿ñíýãòÑàíàõ îé äàõü íýã èæèë òºðëèéí Ñàíàõ îé äàõü íýã èæèë òºðëèéí ºãºãäëèéí äàðààëëûã íýã õýìæýýñò ºãºãäëèéí äàðààëëûã íýã õýìæýýñò õ¿ñíýãò ãýíý.õ¿ñíýãò ãýíý.

10/13/12 4

Íýã èæèë òºðëèéí ºãºãäë¿¿äèéí Íýã èæèë òºðëèéí ºãºãäë¿¿äèéí äàðààëëûã ñàíàõ îéí äýñ äàðààëëûã ñàíàõ îéí äýñ äàðààëñàí ¿¿ðýýñ òîãòñîí ìóæèä äàðààëñàí ¿¿ðýýñ òîãòñîí ìóæèä õàäãàëæ óëìààð ýíý ìóæèéí ýõíèé õàäãàëæ óëìààð ýíý ìóæèéí ýõíèé õàÿã áîëîí ýëåìåíòèéí äóãààðààð õàÿã áîëîí ýëåìåíòèéí äóãààðààð íü ò¿¿íèé ýëåìåíòèéã îëæ áîëíî.íü ò¿¿íèé ýëåìåíòèéã îëæ áîëíî.

10/13/12 5

Õ¿ñíýãò ¿¿ñãýí õýðýãëýõäýý:Õ¿ñíýãò ¿¿ñãýí õýðýãëýõäýý:

Íýãä¿ãýýðò: Õ¿ñíýãòèéí íýð, Íýãä¿ãýýðò: Õ¿ñíýãòèéí íýð, ýëåìåíòèéí òºðºë áîëîí ýëåìåíòèéí ýëåìåíòèéí òºðºë áîëîí ýëåìåíòèéí òîîã òîäîðõîéëæ ºãíº. ̄ ¿íèéã òîîã òîäîðõîéëæ ºãíº. ̄ ¿íèéã õ¿ñíýãòèéã òîäîðõîéëîõ áóþó õ¿ñíýãòèéã òîäîðõîéëîõ áóþó çàðëàõ êîìàíä ãýæ íýðëýíý. Ýíý çàðëàõ êîìàíä ãýæ íýðëýíý. Ýíý êîìàíäààð õ¿ñíýãòèéã õàäãàëàõ êîìàíäààð õ¿ñíýãòèéã õàäãàëàõ ñàíàõ îéã õóâààðèëäàã.ñàíàõ îéã õóâààðèëäàã.

10/13/12 6

Õ¿ñíýãòèéã òîäîðõîéëîõ ¿åä ò¿¿íèé Õ¿ñíýãòèéã òîäîðõîéëîõ ¿åä ò¿¿íèé ýëìåíòèéí òîîíû áàéæ áîëîõ õàìãèéí ýëìåíòèéí òîîíû áàéæ áîëîõ õàìãèéí èõ óòãûã çààæ ºã÷ óëìààð ÿìàð÷ èõ óòãûã çààæ ºã÷ óëìààð ÿìàð÷ ¿åä õàíãàëòòàé áàéõ ñàíàõ îéã ¿åä õàíãàëòòàé áàéõ ñàíàõ îéã õóâààðèëæ àâäàã.õóâààðèëæ àâäàã.

10/13/12 7

Àëãîðèòìûí õýëýíä õ¿ñíýãòèéã Àëãîðèòìûí õýëýíä õ¿ñíýãòèéã áè÷èõäýý:áè÷èõäýý:

Төрөл Төрөл íýð[ýëåìåíòèéí_òîî];íýð[ýëåìåíòèéí_òîî]; õýëáýðòýé òîäîðõîéëæ áè÷íý. õýëáýðòýé òîäîðõîéëæ áè÷íý. Õ¿ñíýãòèéã åðäèéí õóâüñàã÷òàé Õ¿ñíýãòèéã åðäèéí õóâüñàã÷òàé адилханадилхан íýðëýæ òýìäýãëýõ áà íýðëýæ òýìäýãëýõ áà ýëåìåíòèéí òîîã íàòóðàë òîî ýñâýë ýëåìåíòèéí òîîã íàòóðàë òîî ýñâýë ºìíº òîäîðõîéëñîí òîãòìîëîîð ºãíº. ºìíº òîäîðõîéëñîí òîãòìîëîîð ºãíº.

10/13/12 8

Æèøýý íü: Æèøýý íü:

int À[50], B[10];int À[50], B[10];

ýíä õàðãàëçàí 50, 10-í ýíä õàðãàëçàí 50, 10-í ýëåìåíòòýé õ¿ñíýãòèéã ýëåìåíòòýé õ¿ñíýãòèéã òîäîðõîéëæ áàéíà.òîäîðõîéëæ áàéíà.

10/13/12 9

Õ¿ñíýãòèéí íýð íü õ¿ñíýãòèéí Õ¿ñíýãòèéí íýð íü õ¿ñíýãòèéí ýõíèé ýëåìåíòèéí õàÿã áîëîõ ýõíèé ýëåìåíòèéí õàÿã áîëîõ ó÷ðààñ ò¿¿íèé òóñëàìæòàéãààð ó÷ðààñ ò¿¿íèé òóñëàìæòàéãààð äóðûí i äóãààðòàé ýëåìåíòèéã îëæ äóðûí i äóãààðòàé ýëåìåíòèéã îëæ àâàõ áîëîìæòîé.àâàõ áîëîìæòîé.

10/13/12 10

Àëãîðèòìä òîäîðõîé óòãàòàé Àëãîðèòìä òîäîðõîé óòãàòàé òîãòìîëûã òîäîðõîéëæ õýðòîãòìîëûã òîäîðõîéëæ õýðээãëãëээäýã. äýã.

ÀëãîðèòìÀëãîðèòìийий í õýëýíä òîãòìîëûã í õýëýíä òîãòìîëûã

const const íýð=óòãà;íýð=óòãà;

#define #define нэрнэр утгаутга

õýëáýðòýé èëýðõèéëëýýð òîäîðõîéëæ õýëáýðòýé èëýðõèéëëýýð òîäîðõîéëæ óëìààð ýíý íýðèéã òîãòìîë óòãûí îðîíä óëìààð ýíý íýðèéã òîãòìîë óòãûí îðîíä áè÷èæ àøáè÷èæ àøииãëàíà. ãëàíà.

10/13/12 11

Òîãòìîë àøèãëàõ íü àëãîðèòìÒîãòìîë àøèãëàõ íü àëãîðèòìийий í í ¿éëäë¿¿äýä òîãòìîë óòãûã îëîí ¿éëäë¿¿äýä òîãòìîë óòãûã îëîí äàõèí áè÷èõã¿é áàéõ, ñàíàìñàðã¿é äàõèí áè÷èõã¿é áàéõ, ñàíàìñàðã¿é àëäàà ãàðãàõûã áàãàñãàõ, àëäàà ãàðãàõûã áàãàñãàõ, øààðäëàãàòàé ¿åä øèíýýð óòãà øààðäëàãàòàé ¿åä øèíýýð óòãà õÿëáàð ñîëüæ áîëîõ äàâóó õÿëáàð ñîëüæ áîëîõ äàâóó òàëòàé.òàëòàé.

10/13/12 12

Õàðèí òîãòìîëûí íýðèéã óòãà îëãîõ Õàðèí òîãòìîëûí íýðèéã óòãà îëãîõ ¿éëäëèéí ç¿¿í òàëä áè÷èæ øèíý ¿éëäëèéí ç¿¿í òàëä áè÷èæ øèíý óòãà îðóóëæ áîëîõã¿é, ººðººð óòãà îðóóëæ áîëîõã¿é, ººðººð õýëáýë àëãîðèòì äîòîð ò¿¿íèé õýëáýë àëãîðèòì äîòîð ò¿¿íèé óòãûã ººð÷èëæ áîëîõã¿é óòãûã ººð÷èëæ áîëîõã¿é áàéäãààðàà õóâüñàã÷ààñ áàéäãààðàà õóâüñàã÷ààñ ÿëãààòàé. ÿëãààòàé.

10/13/12 13

Òîãòìîëûã àøèãëàæ õ¿ñíýãòèéí Òîãòìîëûã àøèãëàæ õ¿ñíýãòèéí õýìæýýã òîäîðõîéëîõ íü õýìæýýã òîäîðõîéëîõ íü èë¿¿ òîõèðîìæòîé áàéäàã. èë¿¿ òîõèðîìæòîé áàéäàã. Æèøýý íü: Æèøýý íü:

constconst maxn=20;maxn=20;int a[maxn], c[maxn];int a[maxn], c[maxn];

10/13/12 14

Õî̧ ðäóãààðò:Õî̧ ðäóãààðò:Àëãîðèòì, ïðîãðàìä õ¿ñíýãòèéí Àëãîðèòì, ïðîãðàìä õ¿ñíýãòèéí

ýëåìåíòèéã ýëåìåíòèéã çààæ áè÷èõäýý çààæ áè÷èõäýý õ¿ñíýãòèéí íýð, ýëåìåíòèéí õ¿ñíýãòèéí íýð, ýëåìåíòèéí äóãààðûã ºãíº. Äóãààðûã ºãºõ人 à1,äóãààðûã ºãíº. Äóãààðûã ºãºõ人 à1,…ai,…an; …ai,…an; a(1),..a(i),…a(1),..a(i),…a(n); a[1],…a[i],…a[n] ãýõ ìýò ÿíç a(n); a[1],…a[i],…a[n] ãýõ ìýò ÿíç

á¿ðèéí õýëáýðýýð áè÷äýã.á¿ðèéí õýëáýðýýð áè÷äýã.

10/13/12 15

Ãóðàâäóãààðò: Õ¿ñíýãòýíä óòãà Ãóðàâäóãààðò: Õ¿ñíýãòýíä óòãà îëãîõûí òóëä ýëåìåíòèéí óòãûã íýã îëãîõûí òóëä ýëåìåíòèéí óòãûã íýã íýãýýð íü îðóóëàõ ¿éëäýë íýãýýð íü îðóóëàõ ¿éëäýë þìóó þìóó ýñâýë ýëåìåíòýä íýã íýãýýð íü óòãýñâýë ýëåìåíòýä íýã íýãýýð íü óòãаа îëãîõ ¿éëäëèéã ãîëäóó àøèãëàíà. îëãîõ ¿éëäëèéã ãîëäóó àøèãëàíà.

10/13/12 16

Æèøýý íü: õýðýâ Æèøýý íü: õýðýâ const const maxnmaxn=20;=20;int à[maxn];int à[maxn];

áºãººä n<=20 áàéõ n ºãºãäñºí áîë áºãººä n<=20 áàéõ n ºãºãäñºí áîë for(i=0;i<n;i++) à[i]=0;for(i=0;i<n;i++) à[i]=0;äàâòàëòààð à õ¿ñíýãòèéí äàâòàëòààð à õ¿ñíýãòèéí

ýëåìåíò¿¿ä òýã óòãàòàé áîëîõ òóë ýëåìåíò¿¿ä òýã óòãàòàé áîëîõ òóë õ¿ñíýãòèéã öýâýðëýõ ãýæ íýðëýõ¿ñíýãòèéã öýâýðëýõ ãýæ íýðëýннý. ý.

10/13/12 17

for(i=0;i<n;i++) for(i=0;i<n;i++) scanf(“%d”,&a[i]);scanf(“%d”,&a[i]);äàâòàëòààð à õ¿ñíýãò òîîí óòãàòàé äàâòàëòààð à õ¿ñíýãò òîîí óòãàòàé áîëíî. áîëíî.

Öººõºí ýëåìåíòòýé õ¿ñíýãòýíä óòãà Öººõºí ýëåìåíòòýé õ¿ñíýãòýíä óòãà îëãîõäîî á¿õ óòãûã òîî÷èí áè÷èõ îëãîõäîî á¿õ óòãûã òîî÷èí áè÷èõ àðãûã õýðýãëýæ áîëíî.àðãûã õýðýãëýæ áîëíî.

10/13/12 18

ĺðºâä¿ãýýðò: ĺðºâä¿ãýýðò: Õ¿ñíýãòèéã õýâëýæ ãàðãàõäàà ìºí Õ¿ñíýãòèéã õýâëýæ ãàðãàõäàà ìºí

ýëåìåíò ýëåìåíòýýð íü ãàðãàõ ýëåìåíò ýëåìåíòýýð íü ãàðãàõ ¿éëäëèéã àøèãëàíà. ¿éëäëèéã àøèãëàíà.

for(i=0;i<n;i++) printf(“%d”,a[i]);for(i=0;i<n;i++) printf(“%d”,a[i]);

10/13/12 19

Íýã õýìæýýñò õ¿ñíýãòèéí æèøýý : Íýã õýìæýýñò õ¿ñíýãòèéí æèøýý :

Íàòóðàë òîî n, m áà õî̧ óëàà áóóðàõààð Íàòóðàë òîî n, m áà õî̧ óëàà áóóðàõààð ýðýìáëýãäñýí à[1], à[2],…à[n] áà b[1], ýðýìáëýãäñýí à[1], à[2],…à[n] áà b[1], b[2],…b[m] áîäèò òîîí äàðààëàë b[2],…b[m] áîäèò òîîí äàðààëàë ºãºãäñºí áîë ýíý 2 äàðààëëûí ºãºãäñºí áîë ýíý 2 äàðààëëûí ýëåìåíò¿¿äýýñ òîãòîõ ºñºõººð ýëåìåíò¿¿äýýñ òîãòîõ ºñºõººð ýðýìáëýãäñýí ñ[1],ñ[2],…ñ[n+m] ýðýìáëýãäñýí ñ[1],ñ[2],…ñ[n+m] äàðààëëûã ¿¿ñäàðààëëûã ¿¿ñггý. ý.

ÀðãÀðã m,n, à[1], à[2],…à[n] áà b[1], m,n, à[1], à[2],…à[n] áà b[1], b[2],…b[m] b[2],…b[m]

ҮҮð ä¿íð ä¿í ñ[1],ñ[2],…ñ[n+m] ñ[1],ñ[2],…ñ[n+m]

10/13/12 20

{ //àëãæ_1{ //àëãæ_1

Const mn=20;Const mn=20;

int à[mn], b[mn], c[2* mn];int à[mn], b[mn], c[2* mn];

scanf(“%d”,&n); scanf(“%d”,&n);

for(i=0;i<n;i++) scanf(“%d”,&a[i]);for(i=0;i<n;i++) scanf(“%d”,&a[i]);

scanf(“%d”,&m); scanf(“%d”,&m);

for(i=0;i<m;i++)for(i=0;i<m;i++) scanf(“%d”,&b[i]); scanf(“%d”,&b[i]);

i=n-1; j=m-1; k=-1;i=n-1; j=m-1; k=-1;

while (k<n+m) { k=k+1;while (k<n+m) { k=k+1;

10/13/12 21

d=a[i]; e=b[j];d=a[i]; e=b[j];

If (e<d) { c[k]=b[j]; j=j-1; If (e<d) { c[k]=b[j]; j=j-1;

if (j=-1) { while (i>=0) if (j=-1) { while (i>=0)

{ c[k]=a[i]; k=k+1; i=i-1; }{ c[k]=a[i]; k=k+1; i=i-1; }

}}

else { c[k]=a[i]; i=i-1;else { c[k]=a[i]; i=i-1;

if (i=-1) while(j>=0) if (i=-1) while(j>=0)

{ c[k]=b[j]; j=j-1; k=k+1; } { c[k]=b[j]; j=j-1; k=k+1; }

}}

10/13/12 22

}}

for(i=0;i<(n+m);i++) printf(“%d”,c[i]); for(i=0;i<(n+m);i++) printf(“%d”,c[i]);

}}

10/13/12 23

Îëîí õýìжýýñò õ¿ñíýãò , Тодорхой тооны мөр , Тодорхой тооны мөр баганатай хүснэгтийг матриц баганатай хүснэгтийг матриц

. гэнэ. гэнэÌàòðèöèéã ñàíàõ îéä ìºð¿¿äèéí Ìàòðèöèéã ñàíàõ îéä ìºð¿¿äèéí äàðààëàë áîëãîí õàäãàëäàðààëàë áîëãîí õàäãàëааàä õî̧ ð àä õî̧ ð õýìæýýñò õ¿ñíýãò ãýæ íýðëýíý.õýìæýýñò õ¿ñíýãò ãýæ íýðëýíý.

10/13/12 24

ÌàòðèöÌàòðèö ийн мөр ийн мөр íü íü үнэн үнэн хэрэгтээ хэрэгтээ íýã õýìæýýñò õ¿ñíýãò íýã õýìæýýñò õ¿ñíýãò

ììөө í ó÷ðààñ íýã õýìæýýñò í ó÷ðààñ íýã õýìæýýñò õ¿ñíýãòõ¿ñíýãòүүдээүүдээñ òîãòñîí ñ òîãòñîí õ¿ñíýãòèéã õî̧ ð õýìæýýñò õ¿ñíýãòèéã õî̧ ð õýìæýýñò õ¿ñíýãò ãýíý õ¿ñíýãò ãýíý

. хэмээн тодорхойлж болно . хэмээн тодорхойлж болно

10/13/12 25

Ñàí àõ î é a11 a12

….. a1n a21 ….. a2n ….. am1 ….. amn

Õî̧ ð õýìæýýñò õ¿ñíýãòÕî̧ ð õýìæýýñò õ¿ñíýãò

õ ¿ ñíýã ò è é í íýðõ ¿ ñíýã ò è é í íýð

íýã ä ¿ ã à à ð ìº ðíýã ä ¿ ã à à ð ìº ð

õ î¸ ð ä ó ã à à ð ìº ðõ î¸ ðä ó ã à à ð ìº ð

m ä ¿ ã ýýð ìº ðm ä ¿ ã ýýð ìº ð

10/13/12 26

Õî̧ ð õýìæýýñò õ¿ñíýãòýýñ òîãòñîí Õî̧ ð õýìæýýñò õ¿ñíýãòýýñ òîãòñîí õ¿ñíýãò,õ¿ñíýãò, ãóðâàí õýìæýýñò õ¿ñíýãòýýñ òîãòñîí õ¿ñíýãò ãýõ ìýò÷èëýí n-1 õýìæýýñò õ¿ñíýãòýýñ òîãòñîí õ¿ñíýãòèéã òîäîðõîéëæ n õýìæýýñò õ¿ñíýãò ãýæ íýðëэäýã áà õî̧ ð áà ò¿¿íýýñ äýýø õýìæýýñò õ¿ñíýãòèéã îëîí õýìæýýñò õ¿ñíýãò ãýæ íýðëýíý.

10/13/12 27

N õýìæýýñò õ¿ñíýãòèéí ýëåìåíò íü n N õýìæýýñò õ¿ñíýãòèéí ýëåìåíò íü n òîîíû èòîîíû èннäåêñòýé áàéíà. ̄ ¿íèéã aäåêñòýé áàéíà. ̄ ¿íèéã aijij, a, aijkijk, , aaijklijkl ãýõ ìýò áè÷íý. ãýõ ìýò áè÷íý.

Îëîí õýìæýýñò õ¿ñíýãòèéã, íýã Îëîí õýìæýýñò õ¿ñíýãòèéã, íýã õýìæýýñò õ¿ñíýãòòýé àäèëààð íýð õýìæýýñò õ¿ñíýãòòýé àäèëààð íýð áîëîí èíäåêñ á¿ðèéí àâ÷ áîëîõ õàìãèéí áîëîí èíäåêñ á¿ðèéí àâ÷ áîëîõ õàìãèéí èõ óòãûã ºã÷ òîäîðõîéëíî.èõ óòãûã ºã÷ òîäîðõîéëíî.

10/13/12 28

Æèøýý íü: Æèøýý íü:

int íýð[ìºðèéí_òîî][áàãàíûí_òîî];int íýð[ìºðèéí_òîî][áàãàíûí_òîî];

const maxn=20;const maxn=20;

int a[50][20], b[5][10];int a[50][20], b[5][10];

int c[maxn][5], b[10][maxn];int c[maxn][5], b[10][maxn];

10/13/12 29

Îëîí õýìæýýñò õ¿ñíýãòýíä óòãûã Îëîí õýìæýýñò õ¿ñíýãòýíä óòãûã îðóóëàõ áà ãàðãàõäàà îðóóëàõ áà ãàðãàõäàà давхардавхар äàâòàëò àøèãëàäàã.äàâòàëò àøèãëàäàã.

Æèøýý íü: Æèøýý íü:

const max=10;const max=10;

int a[max][max];int a[max][max];

̺ð áàãàíûí òîî ºãºãäñºí áîë ̺ð áàãàíûí òîî ºãºãäñºí áîë

10/13/12 30

for(i=0;i<max;i++) for(i=0;i<max;i++)

for(j=0;j<max;j++) scanf(“%d”,&a[i][j]);for(j=0;j<max;j++) scanf(“%d”,&a[i][j]);

¿̄íòýé àäèëààð ãàðãàõ ¿éëäëèéã ¿̄íòýé àäèëààð ãàðãàõ ¿éëäëèéã

for(i=0;i<max;i++) for(i=0;i<max;i++)

for(j=0;j<max;j++) printf(“%d”,a[i][j]);for(j=0;j<max;j++) printf(“%d”,a[i][j]);

áè÷íý.áè÷íý.

10/13/12 31

Îëîí õýìæýýñò õ¿ñíýãòèéí æèøýý :

Æèøýý íü 2: ªãºãäñºí a[n][n] êâàäðàò ìàòðèöèéí õºíäëºí äèàãîíàëààñ õîéøèõ ýëåìåíò¿¿äèéí min îë.

Àðã n- íàòóðàë òîî ¿ð ä¿í (a min)

10/13/12 32

{ //Àëãæ2{ //Àëãæ2

const mn=5;const mn=5;

int a[mn][mn],Amin,i,j,n;int a[mn][mn],Amin,i,j,n;

scanf(“%d”,&n);scanf(“%d”,&n);

for(i=0;i<n;i++) for(i=0;i<n;i++)

for(j=0;j<n;j++) scanf(“%d”,&a[i]for(j=0;j<n;j++) scanf(“%d”,&a[i][j]); [j]);

Amin=a[0][n-1];Amin=a[0][n-1];

10/13/12 33

for(i=1;i<n;i++) for(i=1;i<n;i++)

for(j=n-i-1;j<n;j++) for(j=n-i-1;j<n;j++)

if (a[i][j]<Amin) Amin=a[i][j];if (a[i][j]<Amin) Amin=a[i][j];

printf(“Min=%d”,Amin);printf(“Min=%d”,Amin);

}}