Documente online.
Username / Parola inexistente
  Zona de administrare documente. Fisierele tale  
Am uitat parola x Creaza cont nou
  Home Exploreaza
Upload




























Sortare folosind "qsort()"

Informatica




Sortare folosind "qsort()"

-------- ----- ------

Daca avem o multime relativ mica de elemente, atunci putem sa folosim sortare cu bule sau metoda sortarii prin selectie directa (care sunt de or 11511c23l dinul O(n^2)). Daca insa avem multe elemente, atunci este convenabil sa folosim metoda sortarii rapide ("quick sort"). Prototipul functiei "qsort()" se gaseste in <stdlib.h>. Acesta este




void qsort(void *array, size_t n_els, size_t el_size, int compare(const void *, const void *));

Argumentele acestei functii au rolul:

array - sirul care va fi sortat;

n_els - numarul de elemente ale sirului;

el_size - numarul de octeti necesar memorarii unui element;

compare - functia de comparare, ce se declara ca fiind int compare(const void *, const void *)

Functia de comparare are ca argumente doi pointeri catre void. Aceasta returneaza un intreg care este mai mic, egal sau mai mare

decat zero dupa cum primul argument este mai mic, egal sau mai mare decat al doilea argument.

-----------

Exemplu:

-----------

Vom scrie un program ce foloseste "qsort()". Initializam un vector, il tiparim, il sortam cu "qsort()", apoi il tiparim din nou.

#include <stdio.h>

#include <stdlib.h>

#include <time.h>



#define N 11 /* dimensiunea sirului */

int cmp(const void *vp, const void *vq); /* functia de comparare */

void init(double *a, int n);

void tipareste_sir(double *a, int n);

void main()

int cmp(const void *vp, const void *vq)

void init(double *a, int n)

void tipareste_sir(double *a, int n)

putchar('\n');

}

----------

Intrebari: 1. Ce trebuie sa modificati pentru a obtine ordinea crescatoare a sirului ?

---------- 2. Ce rol are "const" din declaratia lui "cmp()" ?










Document Info


Accesari: 3550
Apreciat:

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site

Copiaza codul
in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate




Copyright © Contact (SCRIGROUP Int. 2021 )