Sunteți pe pagina 1din 6

VISUAL C#

SORTAREA UNOR VECTORI

Student: Șerban Ovidiu Florin


UNIVERSITATEA “AUREL VLAICU” DIN ARAD
FACULTATEA DE STIINŢE EXACTE
DOMENIUL INFORMATICĂ
AN: 3
Profesor: Marius-Lucian Tomescu

Cuprins.
VISUAL C# ............................................................................................................................................................. 1
SORTAREA UNOR VECTORI ..................................................................................................................................... 1
1) Necesitatea sorțarii unui vector? .................................................................................................................. 2
2) Descrierea proiectului. ................................................................................................................................... 2
3) Descrierea tehnologiilor folosite. .................................................................................................................. 2
- Microsoft Visual Studio profesional 2012 ( Visual C# ) ............................................................................. 2
4) Crearea proiectului in Visual C#. ................................................................................................................. 2
5) Quick Sort. ....................................................................................................................................................... 3
6) Bubble Sort . .................................................................................................................................................... 4
7) Merge Sort. ...................................................................................................................................................... 5
7) Prezentarea programului. .............................................................................................................................. 6
UNIVERSITATEA “AUREL VLAICU” DIN ARAD
FACULTATEA DE STIINŢE EXACTE
DOMENIUL INFORMATICĂ

1) Necesitatea sorțarii unui vector?


Prin sortare înțelegem algoritmul prin care putem rearanja k elemente intr-o anumita ordine (de exemplu: in
ordine lexicografica, ordine crescătoare).
Sortarea este des folosita in lucrul cu liste. Un exemplu de folosire a sortării il reprezintă motoarele de căutare
web, care folosesc astfel de algoritmi (Google, Yahoo, MSN).

2) Descrierea proiectului.
Realizați o aplicație C# în Windows Form Application astfel: sa se vizualizeze mai multe tiputi de sortare.
Bubble Sort [interschimbare]
Quick Sort [partitionare]
Merge Sort [interclasare]
.

3) Descrierea tehnologiilor folosite.


- Microsoft Visual Studio profesional 2012 ( Visual C# )
Visual Studio include un set complet de instrumente de dezvoltare pentru generarea de aplicații ASP.NET,
Servicii Web XML, aplicații desktop și aplicații mobile. Visual Basic, Visual C++, Visual C# și Visual J# toate
folosesc același mediu de dezvoltare integrat (IDE) care le permite partajarea instrumentelor și facilitează
crearea de soluții folosind mai multe limbaje de programare. Aceste limbaje permit să beneficieze de
caracteristicile .NET Framework care oferă acces la tehnologii cheie care simplifica dezvoltarea de aplicații
web ASP și XML Web Services cu Visual Web Developer.

4) Crearea proiectului in Visual C#.


Se va accesa meniul „FILE” selectând „New Project”.

Din fereastra „New Project” selectam „Visual C#” si după aceea „Windows Form Application”.

Page 2
UNIVERSITATEA “AUREL VLAICU” DIN ARAD
FACULTATEA DE STIINŢE EXACTE
DOMENIUL INFORMATICĂ

5) Quick Sort.
Descriere :
Quick Sort este unul dintre cei mai rapizi si mai utilizati algoritmi de sortare pana in acest
moment,bazandu`se pe tehnica "divide et impera".Desi cazul cel mai nefavorabil este O(N^2)
,in practica,QuickSort ofera rezultate mai bune decat restul algoritmilor de sortare din clasa
"O(N log N)".

int[] numbers = { num1, num2, num3, num4, num5, num6, num7, num8, num9, num10 };
int len = 10;
QuickSort_Recursive(numbers, 0, len - 1);
///program that uses increment loop
for (int i = 0; i < numbers.Length; i++)
{
this.textBoxRezultat.Text += numbers[i].ToString() + ", ";
}

static public int Partition(int[] numbers, int left, int right)


{
int pivot = numbers[left];
while (true)
{
while (numbers[left] < pivot)
left++;

while (numbers[right] > pivot)


right--;

if (left < right)


{
int temp = numbers[right];
numbers[right] = numbers[left];
numbers[left] = temp;
}
else
{
return right;
}
}
}

// sursa http://www.softwareandfinance.com/CSharp/QuickSort_Recursive.html
static public void QuickSort_Recursive(int[] arr, int left, int right)
{
// For Recusrion
if (left < right)
{
int pivot = Partition(arr, left, right);

if (pivot > 1)
QuickSort_Recursive(arr, left, pivot - 1);

if (pivot + 1 < right)


QuickSort_Recursive(arr, pivot + 1, right);
}
}

Page 3
UNIVERSITATEA “AUREL VLAICU” DIN ARAD
FACULTATEA DE STIINŢE EXACTE
DOMENIUL INFORMATICĂ

6) Bubble Sort .
Descriere :
Sortarea prin metoda bulelor se considera drept una din cele mai puțin efective metode de
sortare dar cu un algoritm mai puțin complicat.
Ideea de baza a sorțarii prin metoda bulelor este in a parcurge tabloul de la stanga spre dreapta,
fiind comparate elementele alăturate a[ i ] si a[i+1]. Daca vor fi gasite 2 elemente neordonate
valorile lor vor fi interschimbate.
Parcurgerea tabloului de la stingă spre dreapta se va repeta atat timp cat nu vor fi întâlnite
elemente neordonate.

int[] numbers = { num1, num2, num3, num4, num5, num6, num7, num8, num9, num10 };

int temp;

for (int pass = 1; pass <= numbers.Length - 2; pass++)


{
for (int i = 0; i <= numbers.Length - 2; i++)
{
if (numbers[i] > numbers[i + 1])
{
temp = numbers[i + 1];
numbers[i + 1] = numbers[i];
numbers[i] = temp;
}

for (int i = 0; i < numbers.Length; i++)


{
this.textBoxRezultat.Text += numbers[i].ToString() + ", ";
}

Page 4
UNIVERSITATEA “AUREL VLAICU” DIN ARAD
FACULTATEA DE STIINŢE EXACTE
DOMENIUL INFORMATICĂ

7) Merge Sort.
Descriere :
In cazul sortarii prin interclasare vectorii care se interclaseaza sunt doua secvente ordonate
din acelasi vector.
Sortarea prin interclasare utilizeaza metoda Divide et Impera:
- se imparte vectorul in secvente din ce in ce mai mici., astfel incat fiecare secventa sa fie
ordonata la un moment dat si interclasata cu o alta secventa din vector corespunzatoare.
- practic interclasarea va incepe cand se ajunge la o secventa formata din doua elemente.
Aceasta odata ordonata se va interclasa cu o alta corespunzatoare. Cele doua secvente vor
alcatui in subsir ordonat din vector mai mare care la randul lui se va interclasa cu subsirul
corespunzator s.a.m.d.

int[] numbers = { num1, num2, num3, num4, num5, num6, num7, num8, num9, num10 };
int len = 10;
MergeSort_Recursive(numbers, 0, len - 1);

for (int i = 0; i < numbers.Length; i++)


{
this.textBoxRezultat.Text += numbers[i].ToString() + ", ";
}
}
static public void DoMerge(int[] numbers, int left, int mid, int right)
{
int[] temp = new int[25];
int i, left_end, num_elements, tmp_pos;
left_end = (mid - 1);
tmp_pos = left;
num_elements = (right - left + 1);
while ((left <= left_end) && (mid <= right))
{
if (numbers[left] <= numbers[mid])
temp[tmp_pos++] = numbers[left++];
else
temp[tmp_pos++] = numbers[mid++];
}

while (left <= left_end)


temp[tmp_pos++] = numbers[left++];

while (mid <= right)


temp[tmp_pos++] = numbers[mid++];

for (i = 0; i < num_elements; i++)


{
numbers[right] = temp[right];
right--;
}
}
static public void MergeSort_Recursive(int[] numbers, int left, int right)
{
int mid;
if (right > left)
{
mid = (right + left) / 2;
MergeSort_Recursive(numbers, left, mid);
MergeSort_Recursive(numbers, (mid + 1), right);

DoMerge(numbers, left, (mid + 1), right);


}
}

Page 5
UNIVERSITATEA “AUREL VLAICU” DIN ARAD
FACULTATEA DE STIINŢE EXACTE
DOMENIUL INFORMATICĂ

7) Prezentarea programului.
Programul este ușor de utilizat cu o interfața prietenoasa.
Numerele se vor introduce in căsuțele textbox si apăsând pe butoanele de mai jos putem testa fiecare algoritm
prezentat.

Bibliografie:
Sursa: https://www.worldit.info/files/Studiu%20asupra%20algoritmilor%20de%20sortare.pdf , Studiu asupra
algoritmilor de sortare, Avădănei Andrei .

Web:
http://www.softwareandfinance.com/CSharp/Bubble_Sort.html
http://www.softwareandfinance.com/CSharp/MergeSort_Recursive.html
http://www.softwareandfinance.com/CSharp/MergeSort_Iterative.html
http://www.softwareandfinance.com/CSharp/QuickSort_Recursive.html
http://www.softwareandfinance.com/CSharp/QuickSort_Iterative.html

Page 6

S-ar putea să vă placă și