algoritmi de inserare si de stergere in vectori

18
ALGORITMI DE INSERARE SI DE STERGERE IN VECTORI

Upload: aladdin-horton

Post on 02-Jan-2016

231 views

Category:

Documents


13 download

DESCRIPTION

ALGORITMI DE INSERARE SI DE STERGERE IN VECTORI. CE ESTE UN ALGORITM?. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI

ALGORITMI DE INSERARE SI DE

STERGERE IN VECTORI

Page 2: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI

CE ESTE UN ALGORITM?

Un algoritm înseamna în matematica si informatica o metoda sau o procedura de calcul, alcatuita din pasii elementari necesari pentru rezolvarea unei probleme sau categorii de probleme. De obicei algoritmii se implementeaza în mod concret prin programarea adecvata a unui calculator, sau a mai multora. Din diverse motive exista si algoritmi înca neimplementati, teoretici.

Algoritmul este notiunea fundamentala a informaticii. Totul este construit în jurul algoritmilor.

Page 3: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI

INPORTANTA OPTIMIZARII Ideal este ca, pentru o problema data, sa gasim

mai multi algoritmi,iar apoi sa-l alegem dintre acestia pe cel optim. Care este insa criteriul de comparatie? Eficienta unui algoritm poate fi exprimata in mai multe moduri.Putem analiza a posteriori comportarea algoritmilor dupa implementare ,prin rularea pe calculator a unor cazuri diferite sau,putem analiza a priori algoritmul,inaintea programarii lui ,prim determinarea cantitativa a resurselor necesare.

Page 4: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI

ALGORITM PENTRU STERGEREA UNUI ELEMENT DINTR-UN VECTOR

Algoritmul pentru stergerea dintr-un vector

a elementului K inseamna deplasarea elementelor vectorului, incepand cu indicele K+1 , cu o pozitie spre stanga .

Lungime logica a vectorului se va micsora cu un element si va fi n-1.

Page 5: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI

STERGEREA MULTIPLA

!!! sa se stearga elementul de pe locul k al unui vector cu n numere intregi.

OBS!!!Stergerea se face prin deplasare tuturor elementelor aflate pe poziti de la k+1 la n, cu un loc catre stanga si micsorarea lungimi efective a vectorului

for(i=k+1;i<=n;i++) v[i-1]=v[i]; n--; } else i++;

int i,n,k,a[10]; cout<<"n="; cin>>n; cout<<"k="; cin>>k; ...........// se creeaza vectorul for(i=k;i<n-1;i++) a[i]=a[i+1]; // se sterge elementul //se afiseaza vectorul dupa stregerea elementului for(i=0;i<n-1;i++) cout<<a[i]<<“ “;

Page 6: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI

ex2)sa se stearga toate numerele prime.

Page 7: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI

ALGORIT PENTRU INSERAREA UNUI ELEMENT INTR-UN VECTOR

Algoritmul pentru inserarea intr-un vector a unui element in pozitia indicelui k inseamna deplasarea elementelor vectorului,incepand cu indicele k+1, cu o pozitie spre dreapta si atribuirea noii valori elementului cu indicele k. Lungimea logica a vectorului se va mari cu un element si va fi n+1 , cu conditia ca n+1 sa fie mai mic sau efal cu lungimea fizica a vectorului ,altfel ultimul element al vectorului se pierde

Page 8: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI

const int DIM=10 int i,n,k,x,a[DIM]; cout<<"n=" ; cin>>n; cout<<"k="; cin>>k' cout"x="; cin>>x; //x contine valoarea care se insereaza .......//se creeaza vectorul if(n+1<=DIM) for(i=n;i>k;i--) a[i]=a[i-1]; a[k]=x; for(i=0;i<n+1;i++) cout<<a[i]<<" "; else {for (i=n-1;i>k;i--) a[i]=a[i-1]; a[k]=x; for(i=0;i<n;i++) cout<<a[i]<<" ";

Page 9: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI

De retinut!

Mutarea catre dreapta a elementelor pentru a face loc celui care se insereaza trebuie sa inceapa de la sfarsit catre locul inserarii.

for(i=n;i>=k;i--) v[i+1]=v[i]; n++; v[k]=x;

Page 10: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI

INSERAREA MULTIPLA Folosind structura repetitiva WHILE ptr a putea diferentia cazul cand inseram

de cazul cand nu se face inserarea.

ex1) Sa se insereze intre oricare 2 nr. cu acelasi paritate media lor aritmetica.

... i=1; while(i<n) if(v[i]%2==v[i+1]%2) {for(j=n;j>=i+1;j--) v[j+1]=v[j]; n++; v[i+1]=(v[i]+v[i+2])/2; i=i+2; } else i++;

Page 11: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI

ex2)Inserati in fata fiecarui numar negativ modulu sau.

#include<iostream.h> void main() {int v[100][100]n,i cin>>n; for(i=1;i<=n;i++) cin>>v[i]; i=1; while(i<=n) if(v[i]<0) {x=abs(v[i]); for(j=n;j>=i;j++) v[j+1]=v[j]; n++; v[i]=x; i=i+2; } else i++; for(i=1;i<=n;i++) cout<<v[i]<<" "; cout<<endl;}

Page 12: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI

Sortarea prin inserare Sortarea prin inserare consta în urmatoarele:

Fie secventa a0 < a1 < a2 ... < aj-1.

Inserarea elementului aj în aceasta secventa consta în compararea lui aj cu aj-1, aj-2 ... pâna când se ajunge la ai < aj; se insereaza aj dupa ai, cu mentiunea ca în prealabil elementele aj-1, aj-2, ..., ai+1 au fost deplasate spre dreapta cu o pozitie. Metoda care procedeaza întocmai se numeste inserare directa.

Metoda inserarii binare consta în cautarea binara a locului unde trebuie inserat elementul aj, având în vedere ca secventa a0, a1, ..., aj-1 este ordonata crescator.

Tot din categoria inserarii face parte si metoda shell. Pentru a explica metoda se introduce notiunea de h-sortare. Numim h-sortare, sortarea prin inserare directa a urmatoarelor secvente:

a0, ah, a2h, ....

a1, a1+h, a1+2h, ....

......

ah, a2h, a3h, ....

h este numit increment.

Metoda shell consta în alegerea unui numar de k incrementi

h1 > h2 > h3 > ... > hk = 1

si de a face o h1 - sortare, urmata de o h2 - sortare s. a. m. d., în final o 1 - sortare.

Performatele metodei sunt strâns legate de alegerea incrementilor.

În exemplul din paragraful 2.6., functia sort_inserare_directa reda algoritmul de inserare directa, iar functia shell_sort reda algoritmul metodei shell.

Page 13: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI

STUDIU DE CAZ

Scop: explicarea modului in care se aplica algoritmii pentru cautarea unui element intr-un vector , pentru stergerea unui element si pentru inserarea unui element intr-un vector .

Enuntul P1) Se citesc intr-un vector ,de la tastatura ,cel mult 50 de numere intregi .Sa se sterga primul element care are valoarea x (x se citeste de la tastatura ).

OBS!: Se va folosi algoritmul de cautare secventiala pentru a gasi pozitia primului element cu valoarea x , si apoi algoritmul de stergere din acea pozitie.

Page 14: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI
Page 15: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI

Enuntul problumei 2): Se citesc intr-un vector de la tastatura ,cel mult 50 de numere intregi. Sa se insereze elementul cu valoare y inainte de primul element carea are valuarea x(x si y se citesc de la tastatura).

OBS!: Se va folosi algoritmul de cautare secventiala pentru a gasi pozitia primului element cu valaorea x, si apoi algoritmul de inserare a valorii y in aceea pozitie.

Page 16: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI
Page 17: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI

BIBLIOGRAFIE

-cartea Informatica de Mariana Milosescu -cartea Informatica de Dana Lica -wikipedia -www.math.uaic.ro informaticasite.ro

Page 18: ALGORITMI DE INSERARE  SI DE  STERGERE IN VECTORI

PROIECT INTOCMIT DE:ILIE DENISA

CLS IX I1PROFESOR

INDRUMATORCONSTANTIN ADRIANA