Összegzés
Adott egy N elemű T számsorozat. Határozzuk meg az elemek összegét!
A végeredményt az 'osszeg' tartalmazza.
osszeg = 0
ciklus i = 0 .. n -1
osszeg = osszeg + t[i]
ciklus vége
ki osszeg
Megszámolás
Adott egy N elemű T számsorozat. Határozzuk meg az adott tulajdonsággal rendelkező elemek számát!
A végeredményt az 'szamlalo' tartalmazza.
szamlalo = 0
ciklus i = 0 .. n - 1
ha t[i] < 0 akkor
szamlalo = szamlalo + 1
ha vége
ciklus vége
ki szamlalo
Eldöntés "A"
Eldöntés az összes elem vizsgálatával
van = 0
ciklus i = 0 .. n-1
ha tomb[i] = keresett_ertek akkor
van = 1
ha vége
ciklus vége
Eldöntés "B"
Nem megy végig a tömbön
i = 0
ciklus amíg i<n és t[i]<> ker
i=i+1
ciklus vége
Ha i<n akkor
ki "Van ilyen"
különben
ki "A keresett érték nem található"
ha vége
Kiválasztás
Az adott elem a tömb hányadik helyén van. (Tudjuk, hogy tartalmazza!)
i = 0
ciklus amíg tomb[i] <> ker
i = i + 1
ciklus vége
ki i + 1
Keresés /Lineáris vagy szekvenciális/
Adott elem szerepel-e a rendezetlen tömbben és hányadik helyen.
ker = 30 //-- Keresett érték --
i = 0
ciklus amíg i<n és t[i]<>ker
i = i + 1
ciklus vége
Ha i<n akkor
ki "Van ilyen"
ki: "Indexe: ", i
különben
ki: "A keresett érték nem található"
ha vége
Kiválogatás
Adott feltételnek megfelelő elemeket másik tömbbe másolom.
j = 0
ciklus i = 0 .. n - 1
ha a[i] < 5
b[j] = a[i]
j = j + 1
ha vége
ciklus vége
Szétválogatás
Adott tulajdonság értéke alapján másik helyre helyezzük át az elemeket.
j = 0
k = 0
ciklus i = 0 .. n-1
ha a[i] = feltétel
b[j] = a[i]
j = j + 1
különben
c[k] = a[i]
k = k + 1
ha vége
ciklus vége
Metszet
Két tömb azonos elemeinek kiválogatása egy harmadik tömbbe
k = 0
ciklus i = 0 .. n-1
j = 0
ciklus amíg j<m és b[j]<>a[i]
j = j + 1
ciklus vége
ha j<m akkor
c[k] = a[i]
k = k + 1
ha vége
ciklus vége
Unió
A és B tömb minden elemét szeretnénk C tömbbe tenni.
ciklus i = 0 .. n-1
c[i] = a[i]
ciklus vége
k = n
ciklus j = 0 .. m-1
i = 0
ciklus amíg i<n és b[j]<>a[i]
i = i + 1
ciklus vége
ha i>=n akkor
c[k] = b[j]
k = k + 1
ha vége
ciklus vége
Maximum kiválasztás
Keressük a tömb legnagyobb elemét.
max = t[0]
ciklus i = 1 .. n - 1
ha t[i]> max akkor
max = t[i]
ha vége
ciklus vége
ki max
Buborékos rendezés
A sorozat két első elemét összehasonlítjuk, és ha fordított sorrendben vannak felcseréljük. Tovább folytatjuk a párok összehasonlítását.
ciklus i = n-1 .. 1
ciklus j = 0 .. i-1
ha t[j] > t[j+1] akkor
b = t[j+1]
t[j+1] = t[j]
t[j] = b
ha vége
ciklus vége
ciklus vége
Rendezés maximum kiválasztással
Kiválasztjuk a legnagyobb elemet és a rendezetlen tömbrész végére rakjuk.
ciklus i = n-1 .. 0
maxIndex = i
ciklus j = 0 .. i-1
ha t[j] > t[maxIndex] akkor maxIndex = j
ciklus vége
tmp = t[i]
t[i] = t[maxIndex]
t[maxIndex] = tmp
ciklus vége
Rendezés beszúrással
Balról veszem a második elemet és haladok jobbra. Ez lesz az aktuális elem. Mindig az aktuális elemtől balra lévő elemhez hasonlítok. Ha a balra lévő nagyobb, cserélek. Ha cseréltem a csere kisebb elemét megint a baloldalihoz hasonlítom. Ha nem cserélek tovább balra haladva, akkor visszamegyek az aktuális elemhez, és ott újra kezdem.
ciklus i = 0 .. n-1
kulcs = t[i]
j = i - 1
ciklus amíg j >= 0 és t[j] > kulcs
t[j+1] = t[j]
j = j - 1
ciklus vége
t[j+1] = kulcs
ciklus vége
Shell rendezés
Nem csak a szomszédos elemeket hasonlítjuk össze, hanem először távoli indexű értékeket nézzünk, majd folyamatosan csökkentjük a távolságot. Az aktuális távolságot tárolhatom például h tömbben. (Az i értéke felvesz negatív értéket is)
t = tömb(8, 9, 4, 7, 6, 3, 2, 1, 5);
h = tömb(5, 3, 1);
ciklus k = 0 .. 2
lepes = h[k]
ciklus j = lepes .. n-1
i = j - lepes;
kulcs = t[j]
ciklus amíg i >= 0 és t[i] > kulcs
t[i + lepes] = t[i]
i = i - lepes
Ciklus vége
t[i + lepes] = kulcs
Ciklus vége
Ciklus vége
Gyorsrendezés
A gyorsrendezés egy rekurzív algoritmus. Kiválasztunk a listából egy elemet támpontnak, angolosan pivotnak. A rendezendő tömböt/listát kettéosztjuk, majd ami kisebb a támpontnál azt kisebb, ami nagyobb azt a nagyobb és ami egyenlő azt egy egyenlő tömbbe rakom. A végén összefűzöm a három tömböt. A kisebb és nagyobb tömbre külön-külön alkalmazom a gyorsrendezést.
function quicksort(list)
if meret(list) <= 1 akkor
return list
var list less, equal, greater
pivot = list[meret(list)-1]
for each x in lista
if x@<pivot then append x to less
if x==pivot then append x to equal
if x>pivot then append x to greater
return concatenate(quicksort(less), equal, quicksort(greater))
Összefésülés
Két rendezett tömb unóját szeretném megkapni, és az unióképzés után szeretném megtartani a rendezettséget.
i := 0
j := 0
k := -1
ciklus amíg (i< n) és (j<m)
k := k + 1
ha a[i] < b[j] akkor
c[k] := a[i]
i := i + 1
ellenben
ha a[i] = b[j] akkor
c[k] := a[i]
i := i + 1
j := j + 1
ellenben
ha a[i]> b[j] akkor
c[k] := b[j]
j := j + 1
ha 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