Advertisement
NicolaDelPrete

Algoritmi di Ordinamento

Jan 21st, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.74 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Sort
  6. {
  7. public:
  8.     Sort(){}
  9.     /// FUNZIONE PER L'ORDINAMENTO DELL'ARRAY BUBBLE-SORT
  10.     void bobble_sort(int A[],int sizez)
  11.     {
  12.         for(int i=0;i<sizez;i++)
  13.         {
  14.             for(int j=i;j<sizez;j++)
  15.             {
  16.                 if(A[j]<=A[i])
  17.                 {
  18.                     int k=A[i];
  19.                     A[i]=A[j];
  20.                     A[j]=k;
  21.                 }
  22.             }
  23.         }
  24.     }
  25.     ///COMPLESSITA O(n^2)
  26.  
  27.     /// FUNZIONE PER L'ORDINAMENTO DELL'ARRAY INSERTION-SORT
  28.     void insertion_sort(int A[],int sizez)
  29.     {
  30.         for(int j=1;j<sizez;j++)
  31.         {
  32.             int key=A[j];
  33.             int i=j-1;
  34.             while(i>=0 && A[i]>key)
  35.             {
  36.                 A[i+1]=A[i];
  37.                 i--;
  38.             }
  39.             A[i+1]=key;
  40.         }
  41.     }
  42.     /// CASO FAVOREVOLE O(n) CASO MEDIO/PEGGIORE O(n^2)
  43.  
  44.     /// FUNZIONE PER L'ORDINAMENTO DELL'ARRAY MERGE-SORT
  45.     void merges(int A[],int p,int q,int r)
  46.     {
  47.         int n1=q-p+1;
  48.         int n2=r-q;
  49.         int L[n1];
  50.         int R[n2];
  51.         for(int i=0;i<n1;i++)
  52.             {
  53.                 cout<<"Array L ";
  54.                 L[i]=A[p+i];
  55.                 cout<<L[i];
  56.                 cout<<endl;
  57.             }
  58.         for(int j=0;j<n2;j++)
  59.              {
  60.                 cout<<"Array R ";
  61.                 R[j]=A[q+j+1];
  62.                 cout<<R[j];
  63.                 cout<<endl;
  64.             }
  65.  
  66.                 cout<<endl;
  67.                 cout<<endl;
  68.         int i=0,j=0,k=p;
  69.         while (i<n1 && j<n2)
  70.         {
  71.            if (L[i]<=R[j])
  72.            {
  73.                A[k]=L[i];
  74.                i++;
  75.                k++;
  76.            }
  77.            else
  78.            {
  79.                A[k]=R[j];
  80.                j++;
  81.                k++;
  82.            }
  83.         }
  84.         while(i<n1)
  85.         {
  86.             A[k]=L[i];
  87.             i++;
  88.             k++;
  89.         }
  90.         while(j<n2)
  91.         {
  92.             A[k]=R[j];
  93.             j++;
  94.             k++;
  95.         }
  96.  
  97.     }
  98.     void merge_sort(int A[],int in,int sizez)
  99.     {
  100.         if(in<sizez)
  101.         {
  102.             int r=(in+sizez)/2;
  103.             merge_sort(A,in,r);
  104.             r++;
  105.             merge_sort(A,r,sizez);
  106.             r--;
  107.             merges(A,in,r,sizez);
  108.         }
  109.     }
  110.  
  111.     /// FUNZIONE PER L'ORDINAMENTO DELL'ARRAY QUICK-SORT
  112.     void quick_sort(int A[],int p,int r)
  113.     {
  114.         int i=p,j=r;
  115.         int temp;
  116.         int pivot = A[((i+j)/2)];
  117.         while(i<=j)
  118.         {
  119.             while(A[i]<pivot)
  120.                 i++;
  121.             while(A[j]>pivot)
  122.                 j--;
  123.             if(i<=j)
  124.             {
  125.                 temp=A[i];
  126.                 A[i]=A[j];
  127.                 A[j]=temp;
  128.                 i++;
  129.                 j--;
  130.             }
  131.         }
  132.         if(p<j)
  133.             quick_sort(A,p,j);
  134.         if(i<r)
  135.             quick_sort(A,i,r);
  136.     }
  137.  
  138.     /// FUNZIONE PER L'ORDINAMENTO DELL'ARRAY HEAP-SORT
  139.     void heapify (int A[],int n,int i)
  140.     {
  141.         int larg=i;
  142.         int l=2*i+1;
  143.         int r=2*i+2;
  144.         if (l<n && A[l]>A[larg])
  145.             larg=l;
  146.         if (r<n && A[r]>A[larg])
  147.             larg=r;
  148.         if(larg != i)
  149.         {
  150.             swap(A[i],A[larg]);
  151.             heapify(A,n,larg);
  152.         }
  153.  
  154.     }
  155.     void heap_sort(int A[],int n)
  156.     {
  157.        for(int i=n/2-1;i>=0;i--)
  158.             heapify(A,n,i);
  159.        for(int j=n-1;j>=0;j--)
  160.        {
  161.            swap(A[0],A[j]);
  162.            heapify(A,j,0);
  163.        }
  164.     }
  165.     ~Sort(){}
  166.  
  167. } ;
  168.  
  169. int main()
  170. {
  171.     int n=6;
  172.     //int z=0;
  173.     int B[]={10,6,25,40,2,36};
  174.     Sort J;
  175.     J.heap_sort(B,n);
  176.     for(int i=0;i<n;i++)
  177.             cout<<" "<<B[i];
  178.     return 0;
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement