Advertisement
icatalin

mergesort

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