Advertisement
-LIR-

Sort

Jun 21st, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.48 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int n;
  6. int v[100];
  7.  
  8. void CitireVector( int v[] )
  9. {
  10.     cin >> n;
  11.     for( int i=1 ; i<=n ; i++ )
  12.         cin >> v[i];
  13. }
  14.  
  15. void AfisareVector( int v[] )
  16. {
  17.     for( int i=1 ; i<=n ; i++ )
  18.         cout << v[i] << " ";
  19. }
  20.  
  21. void BubbleSort()
  22. {
  23.     bool gata = false;
  24.  
  25.     while(!gata)
  26.     {
  27.         gata = true;
  28.         for( int i=1 ; i<n ; i++ )
  29.             if( v[i] > v[i+1] )
  30.             {
  31.                 swap(v[i], v[i+1]);
  32.                 gata = false;
  33.             }
  34.     }
  35. }
  36.  
  37. void BubbleSortImbunatatit()
  38. {
  39.     bool gata = false;
  40.  
  41.     for( int i=0 ; i<n || !gata ; i++ )
  42.     {
  43.         gata = true;
  44.         for( int j=1 ; j<n-i ; j++ )
  45.             if( v[j] > v[j+1] )
  46.             {
  47.                 swap(v[j], v[j+1]);
  48.                 gata = false;
  49.             }
  50.     }
  51. }
  52.  
  53. void InsertionSort()
  54. {
  55.     int aux, j;
  56.  
  57.     for( int i=2 ; i<=n ; i++ )
  58.     {
  59.         aux = v[i];
  60.         j = i-1;
  61.         while( j>=0 && v[j] > aux )
  62.         {
  63.             v[j+1] = v[j];
  64.             j--;
  65.         }
  66.         v[j+1] = aux;
  67.     }
  68. }
  69.  
  70. void SelectionSort(int v[])
  71. {
  72.     for( int j=1 ; j<n ; j++ )
  73.     {
  74.         int iMinim = j;
  75.         for( int i=j+1 ; i<=n ; i++ )
  76.             if( v[i] < v[iMinim] )
  77.             iMinim = i;
  78.  
  79.         swap(v[j],v[iMinim]);
  80.     }
  81. }
  82.  
  83. int Cautare( int v[], int caut, int s, int d )
  84. {
  85.     if(d <= s)
  86.         return (caut > v[s]) ? (s+1) : s;
  87.  
  88.     int mijloc = (s+d)/2;
  89.  
  90.     if( caut == v[mijloc] )
  91.         return mijloc;
  92.     if( caut > v[mijloc] )
  93.         return Cautare(v, caut, mijloc+1, d);
  94.     return Cautare(v, caut, s, mijloc-1);
  95. }
  96.  
  97. void BinaryInsertionSort( int v[] )
  98. {
  99.     int aux, j, loc;
  100.  
  101.     for( int i=2 ; i<=n ; i++ )
  102.     {
  103.         aux = v[i];
  104.         j = i-1;
  105.         loc = Cautare(v, aux, 1, j);
  106.  
  107.         while(j >= loc)
  108.         {
  109.             v[j+1] = v[j];
  110.             j--;
  111.         }
  112.         v[j+1] = aux;
  113.     }
  114. }
  115.  
  116. void QuickSort(int v[], int s, int d)
  117. {
  118.     int i, pivot, j;
  119.     i = s;
  120.     j = d-1;
  121.     pivot = d;
  122.  
  123.     while( i <= j )
  124.     {
  125.         if( v[i] > v[pivot] )
  126.         {
  127.             swap(v[i],v[j]);
  128.             j--;
  129.             i--;
  130.         }
  131.         i++;
  132.     }
  133.     swap(v[j+1],v[pivot]);
  134.     pivot = j+1;
  135.  
  136.     if( pivot-1-s > 1 )
  137.         QuickSort(v,s,pivot-1);
  138.     if( d-pivot-1 > 1 )
  139.         QuickSort(v,pivot+1,d);
  140. }
  141.  
  142. int main()
  143. {
  144.     CitireVector(v);
  145.     SelectionSort(v);
  146.     AfisareVector(v);
  147.     return 0;
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement