Cum pentru a sorta o matrice în ordine crescătoare Forum

Luați în considerare următoarele tipuri de matrice de sortare ascendentă:
  1. selectarea metodei (SelectionSort)
  2. bule metoda (sortare prin metoda bulelor)
  3. inserții metoda simplă (sortare prin inserție)
  4. Metoda de inserții binare (BinaryInsertionSort)
  5. Schell metoda (ShellSort)
  6. Metoda William Floyd, arbori binari (heapsort)
  7. Metoda von Neumann, M (NeumanSort)
  8. sortarerapidă metoda (sortarerapidă)
x






Notă: matrice, începând cu indexul sunt luate în metoda de sortare de mai sus 0 # 33;
1. Pentru a începe cu trebuie să modificați coeficienții în procedura în sine.

1) Sortarea matrice metoda de alegere ascendentă

Acesta este algoritmul cel mai natural de a comanda. Să presupunem că elementele unei 0. a i-1 deja comandat, apoi printre restul a i. a n-1 și pentru a găsi elementul minim schimbă locul cu elementul I -lea. Și așa mai departe, până când matrice este complet sortate.

Procedura pentru a sorta matrice.

Un element valori * matrice cu indici de la 0 la N-1

* Numărul de elemente N

Procedura SelectionSort (matrice var arr Real ;. const N. Integer);

dacă m> Arr [j-1] atunci


2) Sortare ascendentă matrice (metoda cu bule)

Procedura pentru a sorta matrice.

Un element valori * matrice cu indici de la 0 la N-1

* Numărul de elemente N

Procedura de sortare prin metoda bulelor (matrice var Arr Real ;. const N. Integer);

pentru i: = Pred (N) downto 1 do

pentru j: = 0 până la Pred (i) fac

dacă Arr [j]> = Arr [j + 1] atunci

Mesaj editat de: ROMTEK - 08.10.10, 20:04

Msg. # 2. 09.04.04, 18:21


3) Sortarea matrice ascendentă (Metoda inserări simple,)

scanare Secvențial o 1. a n-1, și fiecare element nou introdus într-o i pe locul potrivit deja în ordonataın o i-1. un 1. Acest loc este determinat prin compararea unei i în concordanță cu elementele ordonate ale unui 0. 1-a i.

Procedura pentru a sorta matrice.

Un element valori * matrice cu indici de la 0 la N-1

4) Sortarea matrice ascendentă (Metoda inserții binare)

Acest algoritm reprezintă versiunea optimizată a celei anterioare, diferența este că, atunci când caută un loc în care este necesar pentru a insera un element într-o colecție i deja comandat unui 0. a i-1. determinat prin algoritmul de împărțire în două (de aici numele algoritmului „inserția binară“ este înțeles ca o „inserție prin împărțirea în jumătate“).

Procedura pentru a sorta matrice.







Un element valori * matrice cu indici de la 0 la N-1

* Numărul de elemente N

Procedura BinaryInsertionSort (var Arr array Real ;. N. Integer);

în timp ce b<>c fac

dacă Arr [c-1]> Arr [i-1] atunci e: = c

dacă Arr [b-1]

Mesaj editat de: volvo877 - 29.04.08, 07:30

Msg. # 3. 09.04.04, 19:03


5) sortarea matrice de Shell

Procedura pentru a sorta matrice.

Un element valori * matrice cu indici de la 0 la N-1

* Numărul de elemente N

Procedura ShellSort (var Arr array Real ;. N. Integer);

dacă Arr [j]<=Arr[j+g] then c:=False


6) Sortare ascendentă matrice (metoda William Floyd, arbori binari)

Algoritmul se bazează pe reprezentarea matrice ca un arbore binar având proprietăți speciale. Memoria calculatorului toate elementele de matrice sunt aranjate în serie, structura arborescentă este definită după cum urmează: presupunem că elementul i din matrice ( „strămoș“) are două elemente copil cu indici 2i + 1 și 2i + 2. Arborele este în formă normală în cazul în care fiecare element al strămoșul multora dintre descendenții lor.

Din proprietățile algoritmului este de remarcat faptul că oferă o viteză stabilă bună de a comanda (ordinul n * log (n)), indiferent de modul în care funcționează matrice cu, și, prin urmare, este utilizat în cazurile în care este necesar să se organizeze o serie de garantat într-un timp scurt.

Procedura pentru a sorta matrice.

Un element valori * matrice cu indici de la 0 la N-1

* Numărul de elemente N

Procedura heapsort (var Arr array Real ;. N. Integer);

în timp ce T<>1 do

dacă Arr [k-1]> = Arr [t-1], atunci t: = 1

în timp ce T<>0 do

dacă k> i atunci t: = 0

dacă Arr [k]> Arr [k-1], apoi inc (k);

dacă Arr [t-1]> = Arr [k-1], atunci t: = 0

Msg. # 4. 09.04.04, 20:20


7) Crescator Array Sort (metoda lui von Neumann, M)

Algoritmul de von Neumann secventiere matrice (îmbinare algoritm de sortare) se bazează pe mai multe Fuziunile comandat deja grupuri de elemente de matrice. Inițial, întreaga matrice este privită ca un set de grupuri dispuse pe un singur element de fiecare. Fuzionarea grupe adiacente grupelor să obțină ordonate, fiecare dintre acestea cuprinzând două elemente (cu excepția, eventual, ultima dintre care nu a existat nici un grup pereche). Mai mult, grupurile comandate devin mai mari, în același mod, etc.

Algoritmul oferă performanțe bune pe viteza, chiar și în comparație cu sortarea printr-un arbore binar. Singurul dezavantaj - necesitatea de a utiliza o serie suplimentară de aceeași dimensiune.

Procedura pentru a sorta matrice.

Un element valori * matrice cu indici de la 0 la N-1

* Numărul de elemente N

Procedura NeumanSort (var Arr array Real ;. N. Integer);

Tarr = array [0. pred (maxint div sizeof (real))] real;

GetMem (BARR, (N - 1) * sizeof (real));

în timp ce MergeLen

în timp ce i + MergeLen<=n do

dacă n2> n atunci n2: = n;

în timp ce (i1<=n1)or (i2<=n2) do

în timp ce I2<=n2 do

în timp ce i1<=n1 do

dacă Arr [i1-1]> Arr [i2-1] atunci

în timp ce i + MergeLen<=n do

dacă n2> n atunci n2: = n;

în timp ce (i1<=n1)or (i2<=n2) do

în timp ce I2<=n2 do

în timp ce i1<=n1 do

dacă BARR ^ [i1-1]> BARR ^ [i2-1] atunci

FreeMem (BARR, (N - 1) * sizeof (real));


8) Sortează ascendent array (metoda Quicksort)

Procedura sortarerapidă (var A: Matrice de cuvânt, L, R: Integer);

în timp ce A [I]

în timp ce A [J]> P do

Mesaj editat de: volvo877 - 18.12.08, 08:49

0 utilizatori citesc acest subiect (0 Vizitatori si 0 Utilizatori ascunsi)

[Script Durata de execuție: 0,1236] [17 interogările folosite] [Generated: 26.07.17, 17:14 GMT]