Treceți la conținutul principal

Prezentat

Forum 02.03.21 Tehnici de programare Limbajul Pascal

    • Tehnica Greedy -Statistica • Problema Comis Voiajerului • Metoda Backtraking Problema Reginelor • Turnuri de Hanoi • Tehnici de sortare metoda Bublesort • Metoda Trierii Pușculița

Forum 20.11.2020 Tehnici de programare quicksort Labirint


Un algoritm de sortare este un algoritm care pune elementele unei liste sau ale unui vector într-o anumită ordine. Cele mai utilizate ordonări sunt cele numerice (crescătoare, descrescătoare) sau lexicografice. Utilizarea unor metode eficiente de sortare este importantă pentru obţinerea unor timpi buni de executie ai altori algoritmifolosiţi frecvent în aplicaţii (precum căutarile în seturi de date şi contopirile de mai multe seturi de date într-unul singur - merge) care necesită ca datele să fie ordonate pentru a putea fi aplicaţi; de asemenea algoritmii de sortare sunt deseori utilizaţi pentru aducerea datelor la forma canonică sau pentru obţinerea de date accesibile pentru oameni. 
Există o multitudine de algoritmi de sortare printre care (clic pe numele algoritmului pentru informaţii suplimentare):
Algoritmi bazaţi pe comparaţii între elementele din listă / vector:
Quicksort
Merge sort
In-place merge sort
Heapsort
Insertion sort
Introsort
Selection sort
Timsort
Shell sort
Bubble sort
Binary tree sort
Cycle sort
Library sort
Patience sorting
Smoothsort
Strand sort
Tournament sort
Cocktail sort
Comb sort
Gnome sort
UnShuffle Sort
Odd-even sort
Burstsort
Flashsort
Samplesort
Algoritmi pentru sortarea numerelor întregi care nu utilizează comparaţii precum şi alţi algoritmi care nu utilizează comparaţii:
Pigeonhole sort
Bucket sort
Counting sort
LSD Radix Sort
MSD Radix Sort
Spreadsort
Algoritmi cu destinaţii şi cerinţe speciale, nepractici în mod normal:
Bead sort
Simple pancake sort
Spaghetti (Poll) sort
Sorting networks
Bitonic sorter
Algoritmi de sortare creaţi pentru amuzament (contraexemple din punct de vedere al eficienţei):
Stooge sort
Bogosort
Animaţii care prezintă modul de lucru al diverşilor algoritmi de sortare (Youtube):
Shell sort
Bubble sort comparat cu quick sort
Merge sort comparat cu quick sort
Animaţii care prezintă modul de lucru al diverşilor algoritmi de sortare :
Quick sort
Heap sort
Smooth sort
Cocktail (shaker) sort
Comb sort
Shell sort
Gnomesort

Program laba11b;
type
 stil=array[0..100,0..100] of byte;
Var
 a:stil;
 i,j,m,n,b:integer;
Procedure lab(i,j:integer;b:integer);
begin
 If (i=m) and (j=n) then
  writeln(' Sfirsit /')
 else
 begin
  if b=1 then
  if a[i+1,j]=0 then  {!! La dreapta !!}
  begin
   Writeln('---> A[' ,i+1, ',' ,j, ']');
   b:=1;
   lab(i+1,j,b);
  end;
   if a[i,j+1]=0 then {!! La dreapta !!}
   begin
    Writeln('---> A[' ,i, ',' ,j+1, ']');
    b:=1;
    lab(i,j+1,b);
   end
  else
  b:=-1;
  if b=-1 then
  if a[i-1,j]=0 then  {!! La stinga!!}
  begin
   Writeln('<--- A[' ,i-1, ',' ,j, ']');
   b:=-1;
   lab(i-1,j,b);
  end;
   if a[i,j+1]=0 then  {!! La stinga !!}
   begin
    Writeln('<---- A[' ,i, ',' ,j+1, ']');
    b:=-1;
    lab(i,j+1,b);
   end
   else
   b:=0;
   if b=0 then
   if a[i,j-1]=0 then  {!! In Jos !!}
   begin
    Writeln('----√A[' ,i, ',' ,j-1, ']');
    b:=0;
    lab(i,j-1,b);
   end;
   if a[i+1,j]=0 then {!! In Jos !! }
   begin
    Writeln('----√ A[' ,i+1, ',' ,j, ']');
    b:=0;
    lab(i+1,j,b);
   end
   else
   b:=2;
   if b=2 then
   if a[i,j+1]=0 then  {!! In Sus !!}
   begin
    Writeln('----^ A[' ,i, ',' ,j-1, ']');
    b:=2;
    lab(i,j-1,b);
   end;
   if a[i-1,j]=0 then {!! In Sus !! }
   begin
    Writeln('----^ A[' ,i+1, ',' ,j, ']');
    b:=2;
    lab(i+1,j,b);
   end
   else
   b:=1;
 end;
end;

begin
 Writeln('Introduceti coordonate in labirint:');
 Write('m=');
 readln(m);
 Write('n=');
 readln(n);
 for i:=1 to m do
  for j:=1 to n do
   begin
    Write('A[' ,i, ',' ,j, ']=');
    Readln(a[i,j]);
   end;
 for i:=0 to m+1 do
 begin
  a[i,0]:=1;
  a[i,n+1]:=1;
 end;
 for j:=1 to n+1 do
 begin
  a[0,j]:=1;
  a[m+1,j]:=1;
 end;
 for i:=0 to m+1 do
 begin
  Writeln;
  for j:=0 to n+1 do
   Write(a[i,j]);
 end; readln;
 b:=1;
 lab(1,1,b);
 Readln; end.
{ Este un program de sortare a valorilor 1 și 0 cu scopul elaborării unui tabel bidimensional pe coordonată n și m, de altfel va afișa Labirintul compus din 0 și 1  la introducerea datelor programul afișează cu săgeți mișcarea în labirint cu diverse permutari}

Comentarii

Postări populare