Sunteți pe pagina 1din 6

MINISTERUL EDUCAŢIEI, CULTURII ȘI CERCETĂRII AL REPUBLICII MOLDOVA

UNIVERSITATEA TEHNICĂ A MOLDOVEI

Facultatea Calculatoare, Informatică şi Microelectronică

Departamentul Informatică şi Ingineria Sistemelor

RAPORT
la lucrarea de laborator nr.5
Tema: „Algoritmi de sortare şi căutare”
Disciplina: „Structuri de Date și Algoritmi”
Varianta 15

A elaborat st. gr. IBM-201, Malai Andrei

A verificat asist. univ., dr. Mamolea Igor

Chisinău 2020
Mersul lucrării:
Se va face cunoştinţă cu mediul interactiv de programare în C.
Se vor studia şi utiliza funcţiile de intrare şi ieşire şi a formatelor .
Se vor executa programele .

Sarcină:
15. Fie dat un tablou unidimensional din n caractere. Să se ordoneze elementele tabloului în
ordine descendentă, utilizând metoda şi funcţia predefinită qsort.

Schema bloc
Programul

#include <stdio.h>
#include <stdlib.h>

int quicksort=0,Qsort=0;
void QuickSort(int a[], int left, int right)
{
//Alegem pivotul
int i = left;
int j = right;
int pivot = a[i];
// Aranjam elementele care sunt mai mici ca pivotul la dreapta
// si cele mai mari decat pivot la stanga
if( left < right)
{
while(i < j)
{
while(a[j] <= pivot && i < j)
{
j--;
}
a[i] = a[j];
quicksort++;
while(a[i] >= pivot && i < j)
{
i++;
}
a[j] = a[i];
quicksort++;
}

a[i] = pivot;
quicksort++;
// Sortam elementele mici spre dreapta de pivot
QuickSort(a, left, i - 1);
// Sortam elementele spre stanga de pivot
QuickSort(a, j + 1, right);
}
}

void printArray(int array[], int size) {


for (int i = 0; i < size; ++i) {
printf("%d ", array[i]);
}
printf("\n");
}
int cmpfunc (const void * a, const void * b) {
//Atribuim valorile de la adresele date
int arg1 = *(const int*)a;
int arg2 = *(const int*)b;
//Comparam valorile
if (arg1 < arg2)
{
Qsort++;
return -1;
}
if (arg1 > arg2)
{
Qsort++;
return 1;
}
return 0;

}
void main()
{
int i, count, number[25],num[25];

printf("How many elements are u going to enter?: ");


scanf("%d",&count);

printf("Enter %d elements: \n", count);


for(i=0;i<count;i++)
scanf("%d",&number[i]);

//Copy elements of an array to another array


for(i = 0; i < count; i++)
num[i]=number[i];

QuickSort(number, 0, count - 1);


printf("Sorted array using quicksort in descending order: \n");
printArray(number, count);
printf("Q=%d\n",quicksort);

qsort(num, count, sizeof(int), cmpfunc);


printf("Sorted array using qsort in descending order: \n");
printArray(number, count);
printf("Q=%d\n",Qsort);

}
Exemple

Concluzie: Rezolvând sarcina, am elaborat funcțiile necesare pentru ce mi-a permis sa creez un
program clar si eficient. Am creat o functie care indeplineste actiunile functiei predefinite qsort, astfel
am comparat rezultatele obtinute de la ambele metode de sortare si am indeplinit sarcina propusa
intitial,de a ordona descendent un tablou de numere intregi.

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