Începem cu o discuţie asupra problemelor generale ale calculabilităţii şi ale algoritmilor necesari pentru rezolvarea acestora, cu problema sortării, ca exemplu introductiv. Pentru a arăta cum vom specifica algoritmii prezentaţi, vom introduce un „ pseudocod ” , care ar trebui să fie familiar cititorilor obişnuiţi cu programarea. Sortarea prin inserţie, un algoritm simplu de sortare, va servi ca exemplu iniţial. Vom analiza timpul de execuţie pentru sortarea prin inserţie, introducând o notaţie care să descrie modul în care creşte acest timp o dată cu numărul obiectelor aflate în operaţia de sortare. De asemenea, vom introduce în proiectarea algoritmilor me to da, pe ca re o v om ut iliza pe n tr u de zv o lt a re a un ui al go ri tm n um it so r ta re prin interclasare. Vom încheia cu o comparaţie între cei doi algoritmi de sortare. Fără a fi foarte exacţi, spunem că un algoritm este orice procedură de calcul bine definită care primeşte o anumită valoare sau o mulţime de valori ca d...
Postări
- Solicitați un link
- X
- Alte aplicații
10 0 -1 -3 1 -4 9 3 -1 -4 3 -4 Am apelat în main() QuickSort(1,12), cu st=1 și dr=12. 1<12=>st<dr=>(intrăm în primul if)=>m=(st+dr)/2=(1+12)/2=6, aux=v[st]=v[1]=10, v[st]=v[1]=v[m]=v[6]=-4, v[m]=v[6]=aux=10, i=st=1, j=dr=12, d=0. (1<12=>i<j). -4 0 -1 -3 1 10 9 3 -1 -4 3 -4 Intrăm în while (s-a respectat condiția). -4=-4=>v[i]≤v[j]. Nu intrăm în al doilea if (nu s-a respectat condiția). i=i+d=1+0=1, j=j+d-1=12+0-1=11. (1<11=>i<j). Continuăm while-ul (s-a respectat condiția). -4<3=>v[i]≤v[j]. Nu intrăm în al doilea if (nu s-a respectat condiția). i=i+d=1+0=1, j=j+d-1=11+0-1=10. (1<10=>i<j). Continuăm while-ul (s-a respectat condiția). -4=-4=>v[i]≤v[j]. Nu intrăm în al doilea if (nu s-a respectat condiția). i=i+d=1+0=1, j=j+d-1=10+0-1=9. (1<9=>i<j). Continuăm while-ul (s-a respectat condiția). -4<-1=>v[i]≤v[j]. Nu intrăm în al doilea if (nu s-a respectat condiția). i=i+d=1+0=1, j=j+d-1=9+0-1=8. (1<8=>i...
- Solicitați un link
- X
- Alte aplicații
10 0 -1 -3 1 -4 9 3 -1 -4 3 -4 Am apelat în main() BinaryInsertionSort(a,12). Intrăm în for. i=2. (2<12=>i≤n). Continuăm for-ul (s-a respectat condiția). aux=a[i]=a[2]=0. st=1. dr=i-1=2-1=1. (1=1=>st≤dr). Intrăm în while (s-a respectat condiția). m=(st+dr)/2=(1+1)/2=2/2=1. 10>0=>a[st]>aux=>(intrăm în if)=>st=m-1=1-1=0. (0<1=>st≤dr). Continuăm while-ul (s-a respectat condiția). m=(st+dr)/2=(0+1)/2=1/2=0. Răspuns nedeterminat #include <iostream> using namespace std; int n,a[50]; void BinaryInsertionSort(int a[],int n) { int st,dr,m,i,j,aux; for (i=2;i<=n;i++) { aux=a[i]; st=1; dr=i-1; while (st<=dr) ...
- Solicitați un link
- X
- Alte aplicații
10 0 -1 -3 1 -4 9 3 -1 -4 3 -4 Am apelat în main() BinaryInsertionSort(a,12). Intrăm în for. i=2. (2<12=>i≤n). Continuăm for-ul (s-a respectat condiția). aux=a[i]=a[2]=0. st=1. dr=i-1=2-1=1. (1=1=>st≤dr). Intrăm în while (s-a respectat condiția). m=(st+dr)/2=(1+1)/2=2/2=1. 10>0=>a[st]>aux=>(intrăm în if)=>st=m-1=1-1=0. (0<1=>st≤dr). Continuăm while-ul (s-a respectat condiția). m=(st+dr)/2=(0+1)/2=1/2=0. Răspuns nedeterminat #include <iostream> using namespace std; int n,a[50]; void BinaryInsertionSort(int a[],int n) { int st,dr,m,i,j,aux; for (i=2;i<=n;i++) { aux=a[i]; st=1; dr=i-1; while (st<=dr) ...
- Solicitați un link
- X
- Alte aplicații
10 0 -1 -3 1 -4 9 3 -1 -4 3 -4 Am apelat în main() BinaryInsertionSort(a,12). Intrăm în for. i=2. (2<12=>i≤n). Continuăm for-ul (s-a respectat condiția). aux=a[i]=a[2]=0. st=1. dr=i-1=2-1=1. (1=1=>st≤dr). Intrăm în while (s-a respectat condiția). m=(st+dr)/2=(1+1)/2=2/2=1. 10>0=>a[st]>aux=>(intrăm în if)=>dr=m+1=1+1=2. (1<2=>st≤dr). Continuăm while-ul (s-a respectat condiția). m=(st+dr)/2=(1+2)/2=3/2=1. 10>0=>a[st]>aux=>(intrăm în if)=>dr=m+1=1+1=2. (1<2=>st≤dr). Ciclu infinit #include <iostream> using namespace std; int n,a[50]; void BinaryInsertionSort(int a[],int n) { int st,dr,m,i,j,aux; for (i=2;i<=n;i++) { aux=a[i]; st=1; dr=i-1; ...
- Solicitați un link
- X
- Alte aplicații
10 0 -1 -3 1 -4 9 3 -1 -4 3 -4 Am apelat în main() BinaryInsertionSort(a,12). Intrăm în for. i=2. (2<12=>i≤n). Continuăm for-ul (s-a respectat condiția). aux=a[i]=a[2]=0. st=1. dr=i-1=2-1=1. (1=1=>st≤dr). Intrăm în while (s-a respectat condiția). m=(st+dr)/2=(1+1)/2=2/2=1. 10>0=>a[st]>aux=>(intrăm în if)=>dr=m+1=1+1=2. (1<2=>st≤dr). Continuăm while-ul (s-a respectat condiția). m=(st+dr)/2=(1+2)/2=3/2=1. 10>0=>a[st]>aux=>(intrăm în if)=>dr=m+1=1+1=2. (1<2=>st≤dr). Ciclu infinit #include <iostream> using namespace std; int n,a[50]; void BinaryInsertionSort(int a[],int n) { int st,dr,m,i,j,aux; for (i=2;i<=n;i++) { aux=a[i]; st=1; dr=i-1; ...