Advertisement
catalyn

mergesort,interclasare

Oct 9th, 2015
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. int v[100],n;
  5. void sortare(intv[],int s,int d)
  6. {
  7. int aux;
  8. if(v[s]>v[d])
  9. aux=v[s];
  10. v[s]=v[d];
  11. v[d]=aux;
  12. }
  13. void interclasare(int v[],int s,int m,int d)
  14. {
  15. int i,j,k,u[100];
  16. i=s;j=m+1;k=0;
  17. while(i<=m && j<=d)
  18. {
  19. if(v[i]<v[j])
  20. {
  21. k++;
  22. v[k]=v[i];
  23. i++;
  24. }
  25. else
  26. {
  27. k++;
  28. v[k]=v[j];
  29. j++;
  30. }
  31. }
  32. if(i<=m)
  33. {for(j=i;j<=m;j++)
  34. k++;
  35. u[k]=v[j];}
  36.  
  37. if(j<=d)
  38. for(i=j;i<=d;i++)
  39. {
  40. k++;
  41. u[k]=v[i];
  42.  
  43. }
  44. k=1;
  45. for(i=s;i<=d;i++)
  46. {
  47. v[i]=u[k];
  48. k++;
  49. }
  50. }
  51. void mergesort(int v[],int s, int d)
  52. {
  53. if(d-s<=1)
  54. sortare(v,s,d);
  55. else
  56. {
  57. m=(s+d)/2;
  58. mergesort(v,s,m);
  59. mergesort(v,m+1,d);
  60. interclasare(v,s,m,d);
  61. }
  62. }
  63. int main()
  64. {
  65. int v[100],n,i;
  66. cin>>n;
  67. for(i=1;i<=n;i++)
  68. cin>>v[i];
  69. mergesort(v,1,n);
  70. for(i=1;i<=n;i++)
  71. cout<<v[i]<<" ";
  72. return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement