Advertisement
Dani_info

Merge Sort

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