Programozási tételek
Sorozat(ok)hoz több sorozat hozzárendelése
Únió
Általános feladat: Rendelkezésünkre áll egy N és egy M elemű halmaz az A() és a B()
vektorban ábrázolva. Készítsük el a két halmaz egyesítését a C() vektorba!
Ciklus I=1-től N-ig C(I):=A(I) Ciklus vége CN:=N Ciklus J=1-től M-ig I:=1 Ciklus amíg I<=N és A(I)<>B(J) I:=I+1 Ciklus vége Ha I>N akkor CN:=CN+1 C(CN):=B(J) Ciklus vége
Metszet
Általános feladat: Rendelkezésünkre áll egy N és egy M elemű halmaz az A() és a B()
vektorban ábrázolva. Készítsük el a két halmaz metszetét a C() vektorba!
CN:=0 Ciklus I=1-től N-ig J:=1 Ciklus amíg J<=M és A(I)<>B(J) J:=J+1 Ciklus vége Ha J<=M akkor CN:=CN+1 C(CN):=A(I) Ciklus vége
Összefuttatás
Általános feladat: Két rendezett sorozat uniója úgy, hogy a rendezettség megmaradjon.
I:=1 J:=1 K:=0 Ciklus amíg I<=N és J<=M K:=K+1 Elágazás A(I) < B(J) esetén C(K):=A(I) I:=I+1 A(I) = B(J) esetén C(K):=A(I) I:=I+1 J:=J+1 A(I) > B(J) esetén C(K):=B(J) J:=J+1 Elágazás vége Ciklus vége Ciklus amíg I<=N K:=K+1 C(K):=A(I) I:=I+1 Ciklus vége Ciklus amíg J<=M K:=K+1 C(K):=B(J) J:=J+1 Ciklus vége
Szétválogatás
Feladat: egy sorozat elemeit választjuk külön két különböző sorozatba aszerint, hogy egy adott T tulajdonsággal rendelkeznek-e az elemek vagy nem.
J:=0 K:=0 Ciklus I=1-től N-ig Ha A(I) T tulajdonságú akkor J:=J+1 B(J):=A(I) egyébként K:=K+1 C(K):=A(I) Ciklus vége
Ha a szétválogatáshoz nem használhatunk fel újabb vektorokat, akkor a megoldás lényegesen bonyolultabb.
Rendezések
Rendezés közvetlen kiválasztással
Lényege: Első menetben az A(1)-et összehasonlítjuk az összes elemmel és ha kisebbet találunk nála, akkor felcseréljük.
Így az első menet végére a legkisebb elem lesz az első helyen. Ezután ezt ismételjük az A(2)-es elemmel, stb.
Az N-1. menet után rendezett lesz a sorozat.
Ciklus I=1-től N-1-ig Ciklus J=I+1-től N-ig Ha A(J) < A(I) akkor C:=A(J) A(J):=A(I) A(I):=C Ciklus vége Ciklus vége
Rendezés minimum-kiválasztással
Lényege: A felesleges cserék kiküszöbölése érdekében két segédváltozót vezetünk be (legkisebb elem értékének és indexének).
Ciklus I=1-től N-1-ig INDEX:=I ÉRTÉK:=A(I) Ciklus J=I+1-től N-ig Ha A(J)<ÉRTÉK akkor ÉRTÉK:=A(J) INDEX:=J Ciklus vége A(INDEX):=A(I) A(I):=ÉRTÉK Ciklus vége
Buborékos rendezés
Lényege: Hasonlítsuk össze a vektor első és második elemét, s ha az első nagyobb, cseréljük meg őket. Ezt követően hasonlítsuk össze a vektor második és harmadik elemét, s ha a második nagyobb, cseréljük meg őket, és így tovább. Látható, hogy ekkor a vektor legnagyobb eleme biztosan a helyére kerül, még akkor is, ha ő volt az első.
Sajnos ez a többi elemre nem feltétlenül teljesül, tehát ahhoz, hogy a második legnagyobb elem a helyére kerüljön, ismét el kell indulnunk a vektor elejéről. Az első elemet össze kell hasonlítani a másodikkal, a másodikat a harmadikkal, stb., azonban most már elég elmenni az utolsó előtti elemig, hiszen az utolsó a helyén van. A következő körben már a harmadik legnagyobb elemet tesszük a helyére, és így tovább. A külső ciklust tehát annyiszor kell lefuttatnunk, ahány eleme van a vektorunknak.
Ciklus I=1-től N-ig Ciklus J=1-től N-I-ig Ha A(J)>A(J+1) akkor Cs:=A(J) A(J):=A(J+1) A(J+1):=Cs Ciklus vége Ciklus vége
Egyszerű beillesztéses rendezés
Lényege: Mintha kártyáinkat egyesével felvéve sorba raknánk. (N-1 menet)
Ciklus J=2-től N-ig I:=J-1 ÉRTÉK:=A(J) Ciklus amíg I > 0 és ÉRTÉK < A(I) A(I+1):=A(I) I:=I-1 Ciklus vége A(I+1):=ÉRTÉK Ciklus vége