Sortarea prin numărare !!!!

5
Sortarea prin numărare!!!! ! Noţiuni generale Program C ++ Caracteris tici Pseudocod Verificare în c++

description

Sortarea prin numărare !!!!. Noţiuni generale. Pseudocod. Caracteristici. !. Verificare î n c++. Program C ++. No ţ iuni Generale. - PowerPoint PPT Presentation

Transcript of Sortarea prin numărare !!!!

Page 1: Sortarea prin  numărare !!!!

Sortarea prin numărare!!!!

!

Noţiuni generale

Program C++

CaracteristiciPseudocod

Verificare în c++

Page 2: Sortarea prin  numărare !!!!

Un algoritm de sortare este un algoritm ce permută elementele unei liste astfel

încât acestea să respecte o ordine dată (cel mai des folosite sunt ordinea numerică şi

cea lexicografică). Câteva din aspectele importante care se au în vedere în realizarea

şi analizarea unui algoritm de sortare sunt:

Complexitatea temporală al algoritmului, în cazul mediu, respectiv pe cel mai rău

caz. Complexitatea se analizează cel mai des în funcţie de numărul de elemente de

sortat. Cazul ideal pentru un algoritm de sortare este O(n) , dar pentru algoritmii care

folosesc doar comparaţii de chei, s-a demonstrat că limita inferioară a complexităţii

este Ω(n log(n)). ⋅

Utilizarea memoriei: memoria suplimentară consumată de algoritm pe lângă

memoria folosită strict pentru stocarea listei de elemente.

Stabilitatea: un algoritm care păstrează ordinea relativă a elementelor în cazul în

care ele au chei egale este un algoritm stabil.

Noţiuni Generale

Page 3: Sortarea prin  numărare !!!!

Această metodă necesită spaţiu suplimentar de memorie. Ea foloseşte

următorii vectori:

- vectorul sursă (vectorul nesortat) a;

- vectorul destinaţie (vectorul sortat) b;

- vectorul numărător (vectorul de contoare) k.

Elementele vectorului sursă a[i] se copie în vectorul destinaţie prin

inserarea în poziţia corespunzătoare, astfel încât, în vectorul destinaţie să

fie respectată relaţia de ordine. Pentru a se cunoaşte poziţia în care se va

insera fiecare element, se parcurge vectorul sursă şi se numără în vectorul

k, pentru fiecare element a[i], câte elemente au valoarea mai mică decât a

lui. Fiecare element al vectorului k este un contor pentru elementul

a[i].Valoarea contorului k[i] pentru elementul a[i] reprezintă

câte elemente sunt mai mici decit el şi arată de fapt poziţia în

care trebuie copiat în vectorul b.

Caracteristici

Page 4: Sortarea prin  numărare !!!!

PseudocodCiteşte n;

Pentru i=0; i<n;

Citeşte a[i];

Pentru i=0; i<n-1;

Pentru j=i+1 ;j<n;

Dacă (a[i]>a[j])

k[i]++;

Altfel k[j]++;

Pentru i=0; i<n;

b[k[i]]=a[i];

Pentru i=0; i<n;

Scrie b[i];

Page 5: Sortarea prin  numărare !!!!

#include <iostream.h>Void main (){ int i,j,n,a[50],b[50],k[50]={0};cout<<"Introduceti dimensiunea sirului : ";cin>>n;for(i=0;i<n;i++) {cout<<"a["<<i<<"]=";cin>>a[i];}for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]>a[j])k[i]++;else k[j]++;for(i=0;i<n;i++)b[k[i]]=a[i];cout<<"Vectorul ordonat este : ";for(i=0;i<n;i++)cout<<b[i]<<" ";cout<<endl; }

Program C++