<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=Keres%C3%A9s_%C3%A9s_rendez%C3%A9s</id>
	<title>Keresés és rendezés - Laptörténet</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=Keres%C3%A9s_%C3%A9s_rendez%C3%A9s"/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Keres%C3%A9s_%C3%A9s_rendez%C3%A9s&amp;action=history"/>
	<updated>2026-04-04T14:12:57Z</updated>
	<subtitle>Az oldal laptörténete a wikiben</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=Keres%C3%A9s_%C3%A9s_rendez%C3%A9s&amp;diff=155936&amp;oldid=prev</id>
		<title>Ferrero, 2013. január 29., 19:05-n</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Keres%C3%A9s_%C3%A9s_rendez%C3%A9s&amp;diff=155936&amp;oldid=prev"/>
		<updated>2013-01-29T19:05:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;hu&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Régebbi változat&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;A lap 2013. január 29., 21:05-kori változata&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;1. sor:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1. sor:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{GlobalTemplate|Infoalap|AlgElRendezesKeresesOsszefoglalo}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;__TOC__&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;__TOC__&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ferrero</name></author>
	</entry>
	<entry>
		<id>https://vik.wiki/index.php?title=Keres%C3%A9s_%C3%A9s_rendez%C3%A9s&amp;diff=136981&amp;oldid=prev</id>
		<title>Unknown user: Új oldal, tartalma: „{{GlobalTemplate|Infoalap|AlgElRendezesKeresesOsszefoglalo}}   __TOC__  &amp;lt; reláció: rendezés &lt;br&gt; (U,&amp;lt;) pár: rendezett halmaz ill. típus  ==Keresés rendezett…”</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Keres%C3%A9s_%C3%A9s_rendez%C3%A9s&amp;diff=136981&amp;oldid=prev"/>
		<updated>2012-10-21T19:52:20Z</updated>

		<summary type="html">&lt;p&gt;Új oldal, tartalma: „{{GlobalTemplate|Infoalap|AlgElRendezesKeresesOsszefoglalo}}   __TOC__  &amp;lt; reláció: rendezés &amp;lt;br&amp;gt; (U,&amp;lt;) pár: rendezett halmaz ill. típus  ==Keresés rendezett…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Új lap&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{GlobalTemplate|Infoalap|AlgElRendezesKeresesOsszefoglalo}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt; reláció: rendezés &amp;lt;br&amp;gt;&lt;br /&gt;
(U,&amp;amp;lt;) pár: rendezett halmaz ill. típus&lt;br /&gt;
&lt;br /&gt;
==Keresés rendezett halmazban==&lt;br /&gt;
&lt;br /&gt;
===Def: Keresés feladata===&lt;br /&gt;
&lt;br /&gt;
Adott egy S &amp;lt;math&amp;gt; \subseteq &amp;lt;/math&amp;gt; (U,&amp;amp;lt;) és egy s &amp;amp;isin; U. A feladatunk annak eldöntése, hogy s &amp;amp;isin; S teljesül-e.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;_Lineáris_keresés&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Lineáris keresés===&lt;br /&gt;
&lt;br /&gt;
* Algoritmus:&lt;br /&gt;
** s-et először s1-gyel hasonlítjuk, ha ez alapján nem kapunk válasz akkor s2-vel&amp;amp;#8230;&lt;br /&gt;
* Költség:&lt;br /&gt;
** Legrosszabb eset: A halmaz minden elemével hasonlítunk, ez n összehasonlítást jelent.&lt;br /&gt;
** Átlagos költség: A lehetséges összehasonlítások számának (n+1 db) átlaga: &amp;lt;math&amp;gt; \frac{1+2+...+n-1+n+n}{n+1} = \frac{n}{2}+\frac{n}{n+1} &amp;lt;/math&amp;gt;&lt;br /&gt;
* Használhatóság:&lt;br /&gt;
** Ha listában, vagy külső táras állományban kell rendeznünk. (ekkor nehézkes a lista középső tagjának vizsgálata)&lt;br /&gt;
&lt;br /&gt;
===Bináris keresés===&lt;br /&gt;
&lt;br /&gt;
* Algoritmus:&lt;br /&gt;
** s-et összehasonlítom S (S = {s1,s2,&amp;amp;#8230;,sn}) középső elemévél, si-vel.&lt;br /&gt;
*** ha s = si akkor végeztünk&lt;br /&gt;
*** ha s &amp;amp;lt; si akkor {s1,&amp;amp;#8230;,si-1} részhalmazban keresünk&lt;br /&gt;
*** ha s &amp;amp;gt; si akkor {si+1,&amp;amp;#8230;,sn} részhalmazban keresünk&lt;br /&gt;
* Költség:&lt;br /&gt;
** Log2(n)+1 (a j-edik összehasonlítás után megmaradt Sj halmaz elemszámára fennáll: &amp;lt;math&amp;gt; |Sj| \leq \frac{n}{2^j} &amp;lt;/math&amp;gt; , j+1 lépésre van szükség, j+1=log2(n)+1 (&amp;lt;math&amp;gt; \lceil{log_2(n+1)}\rceil &amp;lt;/math&amp;gt;))&lt;br /&gt;
* Használhatóság:&lt;br /&gt;
** Ha S középső elemének vizsgálata nem okoz nehézséget. Pl.: S-t tömbben tároljuk.&lt;br /&gt;
&lt;br /&gt;
==Összehasonlítás alapú rendező módszerek==&lt;br /&gt;
&lt;br /&gt;
===Def: Rendezés feladata===&lt;br /&gt;
&lt;br /&gt;
Adott egy A[1:n] tömb, melynek elemei (U,&amp;amp;lt;)-ből valók. A feladat A tömb elemeit átrendezni úgy, hogy &amp;amp;lt; szerint nemcsökkenő sorrendben legyenek.&lt;br /&gt;
&lt;br /&gt;
===Buborék-rendezés===&lt;br /&gt;
&lt;br /&gt;
* Algoritmus:&lt;br /&gt;
** Procedure buborék&lt;br /&gt;
		  &amp;lt;pre&amp;gt;&lt;br /&gt;
for (j=n-1, j&amp;gt;0, j:=j-1) do&lt;br /&gt;
	 for (i=1, i&amp;lt;=j, i:=i+1) do&lt;br /&gt;
		  { ha A[i+1]&amp;amp;lt; A[i], akkor cseréljük ki őket. }&lt;br /&gt;
		  &amp;lt;/pre&amp;gt;&lt;br /&gt;
* Költség:&lt;br /&gt;
** Összehasonlítások száma: minden esetben &amp;lt;math&amp;gt; \frac{n(n-1)}{2} &amp;lt;/math&amp;gt;.&lt;br /&gt;
** Cserék száma: legrosszabb esetben (ha a tömb fordítva van kezdetben) ugyanennyi.&lt;br /&gt;
* Használhatóság:&lt;br /&gt;
** Kis sorozatok (max 10-20 eleműek) esetén használható, egyébként sok összehas.-t igényel.&lt;br /&gt;
** Konzervatív.&lt;br /&gt;
&lt;br /&gt;
===Beszúrásos rendezés===&lt;br /&gt;
&lt;br /&gt;
* Algoritmus:&lt;br /&gt;
** Tegyük fel, hogy A[1 : k ] résztömb rendezett.&lt;br /&gt;
** Ezt felhasználva rendezzük A[1 : k+1] résztömböt:&lt;br /&gt;
*** A k+1-edik elemet kell beszúrni az A[1 : k] tömbbe. Ennek során használhatunk lineáris, ill. bináris keresést.&lt;br /&gt;
* Költség:&lt;br /&gt;
** Összehas.:&lt;br /&gt;
*** Lineáris kereséssel&lt;br /&gt;
**** Legrosszabb eset: &amp;lt;math&amp;gt; \frac{n(n-1)}{2} &amp;lt;/math&amp;gt; (k+1-dik. elem beszúrásakor legrosszabb esetben k öh. kell.)&lt;br /&gt;
**** Átlagosan: &amp;lt;math&amp;gt; \frac{n(n-1)}{4} &amp;lt;/math&amp;gt; (egy &amp;lt;a href=&amp;quot;#_Lineáris_keresés&amp;quot;&amp;gt;lineáris keresés költsége&amp;lt;/a&amp;gt; &amp;amp;gt; k/2, ezt kell összegezni k=1,2,&amp;amp;#8230;,n-1-re)&lt;br /&gt;
*** Bináris kereséssel (mindig ennyi)&lt;br /&gt;
**** &amp;lt;math&amp;gt; n\lceil{log_2(n)}\rceil &amp;lt;/math&amp;gt; (egy bin. keresés költsége: &amp;lt;math&amp;gt; \lceil{log_2(k+1)}\rceil &amp;lt;/math&amp;gt;, ezt kell összegezni k=1,&amp;amp;#8230;,n-1 -re)&lt;br /&gt;
** Cserék: (független a kereséstől)&lt;br /&gt;
*** Legrosszabb eset: &amp;lt;math&amp;gt; \frac{(n+2)(n-1)}{2} &amp;lt;/math&amp;gt;&lt;br /&gt;
*** Átlagosan: &amp;lt;math&amp;gt; \frac{n^2}{4} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Használhatóság:&lt;br /&gt;
** Túl sok mozgatást igényel.&lt;br /&gt;
&lt;br /&gt;
===Egy alsó becslés===&lt;br /&gt;
&lt;br /&gt;
* Tétel: Tegyük fel, hogy egy pusztán két kimenetelű döntéseket használó program legfeljebb k ilyen döntés alapján rendezi n elem bármelyik bemeneti sorrendjét. Ekkor k&amp;amp;ge; &amp;lt;math&amp;gt; log_2(n!) &amp;lt;/math&amp;gt; teljesül.&lt;br /&gt;
* Köv: Egy összehasonlítás alapú rendező módszer n elem rendezésekor legalább &amp;lt;math&amp;gt; log_2(n!) &amp;lt;/math&amp;gt;  összehaonlítást használ.&lt;br /&gt;
* Bizonyítás menete:&lt;br /&gt;
** Tfh. van egy algoritmus, ami u&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;minden permutációját (n!) rendezi és kétkimenetelű döntéseken alapul.&lt;br /&gt;
** Tfh. legfeljebb k döntés elég.&lt;br /&gt;
** k hosszúságú kódszó, ami minden bemenetre más.&lt;br /&gt;
** A kódszavak száma 2&amp;lt;sup&amp;gt;k&amp;lt;/sup&amp;gt;amiből 2&amp;lt;sup&amp;gt;k&amp;lt;/sup&amp;gt;&amp;amp;ge; n!&lt;br /&gt;
&lt;br /&gt;
===Összefésülés (MERGE)===&lt;br /&gt;
&lt;br /&gt;
TFH: A[1:k] és B[1:l] tömbök rendezettek és tartalmukat rendezetten akarjuk tárolni a C[1:k+l] tömbben. C[1]-be az A[1] és B[1] közül a nagyobb kerül (legyen ez most A[1]), ekkor C[2]be az A[2] és B[1]közül kerül a nagyobb.&lt;br /&gt;
Ha ily módon MERGE-eltük pl. az A[1:x] és B[1:y] tömböket akkor elemeik nemcsökkenően a C[1:x+y]-ban vannak, és ekkor igaz, hogy C[x+y+1]:=min{A[x+1], B[y+1]}&lt;br /&gt;
&lt;br /&gt;
===Összefésüléses rendezés (&amp;amp;#1052;SORT)===&lt;br /&gt;
&lt;br /&gt;
* Algoritmus (rekurzív):&lt;br /&gt;
** MSORT(A[1:n]) := MERGE(MSORT(A[1:&amp;lt;math&amp;gt; \lceil\frac{n}{2}\rceil &amp;lt;/math&amp;gt;]), MSORT(A[&amp;lt;math&amp;gt; \lceil\frac{n}{2}\rceil &amp;lt;/math&amp;gt;+1:n]))&lt;br /&gt;
&lt;br /&gt;
MSORT(A[i:i]) az üres utasítás&lt;br /&gt;
** ahol MERGE(összefésülés) a következő:&lt;br /&gt;
*** Két már rendezett sorozat egy sorozatba való rendezése.&lt;br /&gt;
*** Ha az A[1:i] és B[1:j] résztömböket már feldolgoztuk, akkor C[i+j+1] = min{A[i+1], B[j+1]}&lt;br /&gt;
*** Költség: k+l-1 összehas., k+l mozgatás (k és l A ill. B elemszáma)&lt;br /&gt;
* Költség:&lt;br /&gt;
** Összehas.: T(n)=&amp;lt;math&amp;gt; n\lceil{log_2(n)}\rceil &amp;lt;/math&amp;gt; (T(n) &amp;amp;le; n-1+2T(n/2) és T(1) = 0)&lt;br /&gt;
** Csere: &amp;lt;math&amp;gt; 2n\lceil{log_2(n)}\rceil &amp;lt;/math&amp;gt; (egy fázisban az összefésülés 2n mozgatással megvalósítható, &amp;lt;math&amp;gt; \lceil{log_2(n)}\rceil &amp;lt;/math&amp;gt; fázis van)&lt;br /&gt;
* Használhatóság:&lt;br /&gt;
** Szükség lehet segédtömbre, vagy bonyolult módszerek alkalmazására.&lt;br /&gt;
** Konstans szorzó erejéig optimális módszer.&lt;br /&gt;
&lt;br /&gt;
===Kupac adatszerkerezet és kupacos rendezés===&lt;br /&gt;
&lt;br /&gt;
* Def: A kupac adatszerkezet&lt;br /&gt;
** Egy (U,&amp;amp;lt;) rendezett típus, BESZÚR és MINTÖR művelettel.&lt;br /&gt;
** Használhatóság: prioritási sor, összefésülés, kupacos rendezés&lt;br /&gt;
* Bináris kupac (a kupac adatszerkezet egy implementációja)&lt;br /&gt;
** A kupac elemeit egy teljes bináris fában tároljuk. A fa csúcsaiban vannak az elemek.&lt;br /&gt;
** A fára teljesül a kupac tulajdonság: egy tetszőleges csúcs eleme nem lehet nagyobb a fiaiban lévő elemeknél.&lt;br /&gt;
** A teljes bináris fák jól ábrázolhatók tömbben. (A[i] bal fia A[2i], jobb fia A[2i+1])&lt;br /&gt;
** Kupacépítés&lt;br /&gt;
*** Az f fa v csúcsaira lentről felfelé, jobbról balra felszivárog(v)&lt;br /&gt;
*** felszivárog(f) (a az f-ben lévő, a1,a2 f fiaiban lévő elem)&lt;br /&gt;
**** Ha min{a1,a2}&amp;amp;lt;a, akkor min{a1,a2} helyet cserél a-val.&lt;br /&gt;
**** Ha az a elem ai-vel cserélt helyet, akkor felszivárog(fi).&lt;br /&gt;
*** felszivárog(f) költsége: l-1 csere és 2(l-1) összehas. (l a szintek száma)&lt;br /&gt;
** Kupacépítés költsége:&lt;br /&gt;
*** cserék száma: 2n (felszivárog költsége az i-edik szinten egy csúcsra: l-i cs., egy szinten &amp;amp;le;2&amp;lt;sup&amp;gt;i-1&amp;lt;/sup&amp;gt;csúcs, összesen &amp;lt;math&amp;gt; \sum_{i=1}^{l}(l-i)2^{i-1} &amp;lt;/math&amp;gt; csere)&lt;br /&gt;
*** összehas. száma: 4n (a felszivárog során 2-szer annyi öh. kell mint csere)&lt;br /&gt;
** MINTÖR megvalósítás&lt;br /&gt;
*** Gyökérből kivesszük az elemet, helyére tesszük a jobb alsó elemet, majd felszivárog(f)&lt;br /&gt;
*** Költség: O(l) = O(logn)&lt;br /&gt;
** BESZÚR(s) megvalósítása:&lt;br /&gt;
*** Új levelet adunk a fához, és addig mozgatjuk felfelé, amíg s&amp;amp;lt;s&amp;amp;#8217; teljesül.&lt;br /&gt;
*** Költség: O(l) = O(logn)&lt;br /&gt;
* Kupacos rendezés&lt;br /&gt;
** Algoritmus:&lt;br /&gt;
*** n elemből kupacot építünk&lt;br /&gt;
*** n darab MINTÖR megadja nem csökkenő sorrendben az elemeket.&lt;br /&gt;
** Költség: O(n)+O(nlogn)&lt;br /&gt;
** Összesített költsége a felső becslések alapján a rendező eljárások között a legjobb.&lt;br /&gt;
* A d-kupacok&lt;br /&gt;
** A bináris kupacok általánosításai. Egy csúcsnak d fia lehet. Minden jellemzője a bináris eljárások általánosításával kapható meg.&lt;br /&gt;
&lt;br /&gt;
===Gyorsrendezés===&lt;br /&gt;
&lt;br /&gt;
* Algoritmus: GYORSREND(A[1:n])&lt;br /&gt;
** Válasszunk egy véletlen s elemet az A tömbből.&lt;br /&gt;
&lt;br /&gt;
PARTÍCIÓ(s); az eredmény legyen az A[1:k], A[k+1:l], A[l+1:n]  felbontás&lt;br /&gt;
&lt;br /&gt;
GYORSREND(A[1:k]);GYORSREND(A[l+1:n])&lt;br /&gt;
** PARTÍCIÓ(s)&lt;br /&gt;
### Adott A[1:n] tömb és s elem, illetve i és j változók.&lt;br /&gt;
### i-t 1-től indítva növeljük, amíg A[i]&amp;amp;lt;s teljesül. Utána j-t n-től indítva csökkentjük, amíg A[j]&amp;amp;ge;s.&lt;br /&gt;
### Ha mindkettő megáll és i&amp;amp;lt;j, akkor felcseréljük A[i]-t és A[j]-t. i:=i+1; j:=j-1.&lt;br /&gt;
### Ha i&amp;amp;lt;j már nem áll fenn, akkor s előfordulásait a felső rész elejére mozgatjuk.&lt;br /&gt;
*** A PARTÍCÍÓ költsége: O(n)&lt;br /&gt;
* Költség: 1.39nlogn+O(n)&lt;br /&gt;
** (C(n,j), ha j szerint partícionálunk. C(n,j)=n-1+C(j-1)+C(n-j) Minden j ugyanakkora eséllyel indul: &amp;lt;math&amp;gt; C(n)=\frac{1}{n}\sum_{i=1}^{n}C(n,i) &amp;lt;/math&amp;gt;, ebbe behelyettesítjük az előzőt, majd C(n-1)-re is felírjuk, a kettőt egymásból kivonjuk, átalakítunk, becslünk)&lt;br /&gt;
* Használhatóság:&lt;br /&gt;
** Átlagos költsége a legjobb.&lt;br /&gt;
&lt;br /&gt;
===A k-adik elem kiválasztása===&lt;br /&gt;
&lt;br /&gt;
* A max (min) elem kiválasztása&lt;br /&gt;
** Költség: n-1 (pl buborék rendezéssel, de ennyi mindenképpen kell is: ahhoz, hogy u-ról belássuk, hogy max. minden más elemre szükség van egy olyan összehas-ra, amiben alulmarad u-val szemben)&lt;br /&gt;
* k-adik elem&lt;br /&gt;
** Rendezzük az n elemet O(nlogn) lépésben, majd kiválasztjuk a k-adik elemet. Ez O(nlogn) lépés.&lt;br /&gt;
** O(n) lépésszámmal:&lt;br /&gt;
*** Ha (k&amp;amp;le;n/logn) vagy k&amp;amp;ge;(n-n/logn): építsünk kupacot, majd hajtsunk végre k MINTÖR-t.&lt;br /&gt;
*** Általánosan: bonyolult algoritmusok, amik csak nagy n esetén veszik fel a versenyt a fenti megoldásokkal. (redukciós módszer, polgár keresése)&lt;br /&gt;
&lt;br /&gt;
==Kulcsmanipulációs rendezések==&lt;br /&gt;
&lt;br /&gt;
* A kulcsok belső szerkezetéről szóló ismereteket is kihasználjuk.&lt;br /&gt;
&lt;br /&gt;
===Ládarendezés===&lt;br /&gt;
&lt;br /&gt;
* A[1:n] tömböt kell rendezni, ahol az elemek m-félék lehetnek.&lt;br /&gt;
* Algoritmus:&lt;br /&gt;
** Létrehozunk egy U elemeivel indexelt B tömböt (m hosszú).&lt;br /&gt;
** Végigolvassuk A tömböt és az s=A[i] elemet a B[s] lista végére fűzzük.&lt;br /&gt;
** Növekvő sorrendben végigmegy B-n és a B[i] listák tartalmát visszaírjuk A-ba.&lt;br /&gt;
* Költség: O(n+m), tehát ha m&amp;amp;le;cn, akkor O(n)&lt;br /&gt;
* Használhatóság:&lt;br /&gt;
** A módszer akkor hasznos, ha a lehetséges elemtípusok száma nem túl nagy a rendezendő elemek számához képest.&lt;br /&gt;
&lt;br /&gt;
===Radix rendezés===&lt;br /&gt;
&lt;br /&gt;
* Használhatóság:&lt;br /&gt;
** A rendezendő kulcsok összetettek és a &amp;amp;lt; reláció a komponensek rendezéséből álló lexikografikus rendezés. Pl: t1,&amp;amp;#8230;,tk és u1,&amp;amp;#8230;,uk két kulcs U-ból. t1,&amp;amp;#8230;,tk &amp;amp;gt; u1,&amp;amp;#8230;,uk, ha teljesül, hogy ti&amp;amp;gt;ui a legkisebb i indexre, amelyre ti &amp;amp;#8800; ui.&lt;br /&gt;
* Algoritmus:&lt;br /&gt;
** Rendezzük a sorozatot az utolsó, k-adik komponensek szerint ládarendezéssel.&lt;br /&gt;
** Az eredményül kapott sorozatot ládarendezzük k-1-edik komponens szerint, &amp;amp;#8230;, végül az első komponens szerint.&lt;br /&gt;
* Annak bizonyítása, hogy az algoritmus jó eredményt ad:&lt;br /&gt;
** k=2 esetben: X=x1x2; Y=y1y2; Ha X &amp;amp;lt; Y akkor&lt;br /&gt;
*** vagy x1&amp;amp;lt;y1, ekkor a 2. rendezés biztosítja a helyes sorrendet.&lt;br /&gt;
*** vagy (x1=x2) &amp;amp; (x2&amp;amp;lt;y2), ekkor az 1. rendezés után X megelőzi Y-t és ez a sorrend a 2. keresés során nem változhat.&lt;br /&gt;
** Ezt könnyen általánosíthatjuk.&lt;br /&gt;
* Költség: &amp;lt;math&amp;gt; O(kn+\sum_{i=1}^{k}s_i) &amp;lt;/math&amp;gt; (k db ládarendezés költségének összege(si az i-edik típus elemszáma))&lt;br /&gt;
&lt;br /&gt;
==Batcher-féle páros-páratlan összefésülés==&lt;br /&gt;
&lt;br /&gt;
===Algoritmus===&lt;br /&gt;
&lt;br /&gt;
* Az összefésüléses rendezés során használt MERGE eljárást cseréljük le PM eljárásra.&lt;br /&gt;
* PM eljárás:&lt;br /&gt;
** a1&amp;amp;lt;&amp;amp;#8230;&amp;amp;lt;al és b1&amp;amp;lt;&amp;amp;#8230;&amp;amp;lt;bm sorozatokat akarjuk összefésüni c1&amp;amp;lt;&amp;amp;#8230;&amp;amp;lt;cl+m sorozattá.&lt;br /&gt;
** Párhuzamosan összefésüljük a1&amp;amp;lt;a3&amp;amp;lt;a5&amp;amp;lt;&amp;amp;#8230; és b2&amp;amp;lt;b4&amp;amp;#8230; sorozatot az u1&amp;amp;lt;u2&amp;amp;lt;u3 sorozattá, illetve az a2&amp;amp;lt;a4&amp;amp;lt;&amp;amp;#8230; és b1&amp;amp;lt;b3&amp;amp;lt;&amp;amp;#8230; sorozatot v1&amp;amp;lt;v2&amp;amp;lt;v3&amp;amp;#8230; sorozattá.&lt;br /&gt;
** {ui} és {vj} párhuzamosan egyetlen lépésben összefésülhető:&lt;br /&gt;
*** c2i-1=min{ui,vi}, c2i=max{ui,vi} (biz:TK 50)&lt;br /&gt;
* A rendező algoritmus:&lt;br /&gt;
** MSORT(A[1:n]) := PM(MSORT(A[1: &amp;lt;math&amp;gt; \lceil\frac{n}{2}\rceil &amp;lt;/math&amp;gt; ]), MSORT(A[&amp;lt;math&amp;gt; \lceil\frac{n}{2}\rceil &amp;lt;/math&amp;gt;+1:n]))&lt;br /&gt;
&lt;br /&gt;
===Költség===&lt;br /&gt;
&lt;br /&gt;
* A PM eljárás költsége: ai és bj sorozatok öszhossza n és van &amp;lt;math&amp;gt; \lfloor\frac{n}{2}\rfloor &amp;lt;/math&amp;gt; processzorunk.&lt;br /&gt;
** Tp(n)&amp;amp;le; &amp;lt;math&amp;gt; \lceil{log_2n}\rceil &amp;lt;/math&amp;gt; (Tp(n) &amp;amp;le; Tp(&amp;lt;math&amp;gt; \lceil\frac{n}{2}\rceil &amp;lt;/math&amp;gt;)+1 (két félmeretű részfeladat párhuzamosan + {ui} és {vj} összefésülése))&lt;br /&gt;
* A rendezés költsége: tp(n)=O(log&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;n) (biz: tp(n) &amp;amp;le; tp(&amp;lt;math&amp;gt; \lceil\frac{n}{2}\rceil &amp;lt;/math&amp;gt;)+&amp;lt;math&amp;gt; \lfloor\frac{n}{2}\rfloor &amp;lt;/math&amp;gt; )&lt;br /&gt;
&lt;br /&gt;
==Külső tárak tartalmának rendezése==&lt;br /&gt;
&lt;br /&gt;
* Cél: a lapelérések számának minimalizálása.&lt;br /&gt;
&lt;br /&gt;
===Összefésüléses rendezés külső tárakon===&lt;br /&gt;
&lt;br /&gt;
* Az eddigiek közül ez az egyetlen, ami külső tárakon is hatékony.&lt;br /&gt;
* Algoritmus:&lt;br /&gt;
** k hosszú futam: k szomszédos lapból álló rész, amiben a rekordok rendezetten helyezkednek el.&lt;br /&gt;
** k-hosszú (legroszabb esetben k=1) kezdőfutamokat hozunk létre és egyenletesen kiírjuk őket A és B állományba.&lt;br /&gt;
** Összefésüljük A és B k hosszú futamait 2k hosszúvá ezeket kiírjuk C-be és D-be&lt;br /&gt;
** Ezt ismételjük, amíg kész nem vagyunk.&lt;br /&gt;
* Költség(lapelérések száma): 2n(&amp;lt;math&amp;gt; \lfloor\frac{n}{2}\rfloor &amp;lt;/math&amp;gt;+1) (biz: &amp;lt;math&amp;gt; \lfloor\frac{n}{2}\rfloor &amp;lt;/math&amp;gt; menet szükséges, egy menethez 2n lapelérés tartozik)&lt;br /&gt;
* Gyorsítási lehetőségek:&lt;br /&gt;
** Minél nagyobb kezdőfutam létrehozása.&lt;br /&gt;
*** Kezdeti futam létrehozása kupaccal&lt;br /&gt;
** m-felé fésülés.&lt;br /&gt;
&lt;br /&gt;
-- [[SomodiTibor|SoTi]] - 2005.05.23.&lt;br /&gt;
&lt;br /&gt;
Használj Firefoxot, nekem sem jelenítette meg i-explorer, megkérdeztem ismerőst és mondta, hogy semmi baj az oldallal.Valóban így van. -- [[CzinderAttila|ati]] - 2007.01.02.&lt;br /&gt;
&lt;br /&gt;
Hát mit ad isten, firefox-ot használok :) és most már kész a latexba fordítódás -- [[TothTamas|Tommey]] - 2007.01.02.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Infoalap]]&lt;/div&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
</feed>