darkjessy94

mergesort - antonio guerra

Oct 12th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. void riempi(vector <int> &a)
  8. {
  9. cout<<"RIEMPIMENTO VETTORE :"<<endl;
  10. int temp, n;
  11. cout<<"QUANTI ELEMENTI DOVRA' CONTENERE ?"<<endl;
  12. cin>>n;
  13. for(int i=0;i<n;i++)
  14. {
  15. cout<<"INSERISCI L'ELEMENTO NUMERO "<<i+1<<" : ";
  16. cin>>temp;
  17. a.push_back(temp);
  18. }
  19. }
  20.  
  21. void stampa(vector <int> a)
  22. {
  23. cout<<"STAMPA VETTORE :"<<endl;
  24. for(int i=0;i<a.size();i++)
  25. cout<<"|"<<a.at(i)<<"|"<<endl;
  26. }
  27.  
  28. void merge(vector <int> &a, int primo, int mediano, int ultimo)
  29. {
  30. int i, j, k;
  31. vector <int> b;
  32. b.resize(a.size());
  33. i = primo;
  34. j = mediano+1;
  35. k = 0;
  36.  
  37. while(i<=mediano && j<= ultimo)
  38. {
  39. if(a.at(i)<a.at(j))
  40. {
  41. b.at(k)=a.at(i++);
  42. }
  43. else
  44. {
  45. b.at(k)=a.at(j++);
  46. }
  47. k++;
  48. }
  49.  
  50. while(i<=mediano)
  51. {
  52. b.at(k)=a.at(i++);
  53. k++;
  54. }
  55.  
  56. while(j<=ultimo)
  57. {
  58. b.at(k)=a.at(j++);
  59. j++;
  60. k++;
  61. }
  62. for(k=primo;k<=ultimo;k++)
  63. a.at(k)=b.at(k-primo);
  64. }
  65.  
  66. void mergesort(vector <int> &a, int primo, int ultimo)
  67. {
  68. int mediano;
  69. if(primo<ultimo)
  70. {
  71. mediano = (primo+ultimo)/2;
  72. mergesort(a,primo,mediano);
  73. mergesort(a,mediano+1, ultimo);
  74. merge(a,primo,mediano,ultimo);
  75. }
  76. }
  77.  
  78. int main()
  79. {
  80. vector <int> a;
  81. riempi(a);
  82. stampa(a);
  83. mergesort(a,0,a.size()-1);
  84. stampa(a);
  85. return 0;
  86. }
Add Comment
Please, Sign In to add comment