Documente Academic
Documente Profesional
Documente Cultură
Raport la
Lucrarea de laborator Nr. 3
Disciplina: Algoritmi si proiectarea algoritmilor
Chișinău – 2020
Scopul lucrării: 1. Analiza empirică a algoritmilor
SARCINA DE BAZĂ:
1. Studiaţi noţiunile teoretice despre metoda divide et impera.
2. Implementaţi algoritmii Mergesort şi Quicksort.
3. Efectuaţi analiza empirică a algoritmilor Mergesort şi
Quicksort.
4. Implementați +1 algoritm de sortare (algoritmul sa fie unic
per elev în subgrupa)
5. Faceţi o concluzie asupra lucrării efectuate.
Programul (JAVA):
public class MergeSort {
public
int[] Array;
class QuickSort
{
public int Array[];
private
void quickSort(int[] arr, int indexLeft, int indexRight)
{
if(indexLeft >= indexRight)
{
return;
}
int pivotIndex = partition(arr, indexLeft, indexRight);
quickSort(arr, indexLeft, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, indexRight);
Array = arr;
}
int aux;
int pivot = arr[indexRight];
int pivotIndex = indexLeft;
for(int i = indexLeft; i < indexRight; i++)
{
if(pivot >= arr[i])
{
aux = arr[pivotIndex];
arr[pivotIndex] = arr[i];
arr[i] = aux;
pivotIndex++;
}
}
aux = arr[indexRight];
arr[indexRight] = arr[pivotIndex];
arr[pivotIndex] = aux;
return pivotIndex;
}
}
class GnomeSort
{
}
}
import java.util.Scanner;
class ArrayNesortat {
static int num;
}
}
Pentru tablouri random:
n=10
n=100
n=500
n=1000
n=2000
n=5000
180000000
160000000
140000000
120000000
Numarul de iteratii
100000000
80000000
60000000
40000000
20000000
0
n=10 n=100 n=500 n=1000 n=2000 n=5000
n=500
n=2000
n=5000
200000000
180000000
160000000
140000000
Numarul de iteratii
120000000
100000000
80000000
60000000
40000000
20000000
0
n=50 n=500 n=2000 n=5000
n=1000
n=2000
n=5000
180000000
160000000
140000000
120000000
Numarul de iteratii
100000000
80000000
60000000
40000000
20000000
0
n=100 n=1000 n=2000 n=5000
Concluzie:
Scopul acestei lucrari de laborator a fost de a efectua analiza
empirica a 3 algoritmi destinati rezolvarii aceleiasi probleme : de a sorta
un tablou de numere in ordine crescatoare.Conform rezultatelor
obtinute,pot spune ca Merge Sort este cel mai optim algoritm dintre
acestea 3.Quick Sortul este eficient la sortarea unui tablou cu putine
elemente, iar Gnome Sortul este foarte eficient in cazul in care tabloul
este deja sortat, Merge Sortul avand o complexitate buna in toate
cazurile.