Advertisement
Guest User

Untitled

a guest
Jan 21st, 2019
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. in divide() cum functioneaza practic? cum de sorteaza in mod recursiv daca atunci cand apelam divide(start,m,v)o sa faca asta pana cand o sa fie cate un element ,apoi o sa ia divide(m+1,ends,v) care o sa faca la fel.La ce se face merge pana la urma?????
  2.  
  3. #include<iostream>
  4.  
  5. using namespace std;
  6.  
  7. void mergev(int start, int ends, int m, int v[100])
  8. {
  9. int i=start;
  10. int j=m+1;
  11. int k=start;
  12. int b[100];
  13.  
  14. while(i<=m&&j<=ends)
  15. if(v[i]>v[j])
  16. b[k++]=v[j++];
  17. else
  18. b[k++]=v[i++];
  19.  
  20. while(i<=m)
  21. b[k++]=v[i++];
  22. while(j<=ends)
  23. b[k++]=v[j++];
  24.  
  25. for(int i=start;i<=ends;i++)
  26. v[i]=b[i];
  27.  
  28.  
  29. }
  30.  
  31. void divide(int start, int ends, int v[100])
  32. {
  33. int m;
  34. //checks if it has only 1 element
  35. if(start>=ends)
  36. return;
  37. else
  38. {
  39. m=(start+ends)/2;
  40. divide(start,m,v);
  41. divide(m+1,ends,v);
  42. mergev(start,ends,m,v);
  43. }
  44.  
  45.  
  46.  
  47. }
  48.  
  49. int main()
  50. {
  51. int n, v[100];
  52. cin>>n;
  53.  
  54. for(int i=1;i<=n;i++)
  55. cin>>v[i];
  56.  
  57. cout<<"nesortat:"<<endl;
  58. for(int i=1;i<=n;i++)
  59. cout<<v[i]<<" ";
  60.  
  61. divide(1,n,v);
  62. cout<<endl<<"sortat:"<<endl;
  63. for(int i=1;i<=n;i++)
  64. cout<<v[i]<<" ";
  65.  
  66. return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement