Advertisement
Guest User

Untitled

a guest
Sep 18th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.62 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7.  
  8. void cit(int a[], int &n)
  9. {
  10.     cin >> n;
  11.     int i;
  12.     for(i = 0; i < n; ++i)
  13.         cin >> a[i];
  14. }
  15.  
  16. void interclas(int a[], int &dima, int b[], int &dimb, int c[], int &k)
  17. {
  18.     int i = 0, j = 0;
  19.     while(i < dima && j < dimb)
  20.     {
  21.         if(a[i] < b[j])
  22.             c[k++] = a[i++];
  23.         else
  24.             c[k++] = b[j++];
  25.     }
  26.     while(i < dima)
  27.         c[k++] = a[i++];
  28.     while(j < dimb)
  29.         c[k++] = b[j++];
  30. }
  31.  
  32. void afis(int c[], int k);
  33.  
  34. void combina(int v[], int st, int mij, int dr)
  35. {
  36.     int c[200], i = st, j = mij+1, k = 0;
  37.     while(i <= mij && j <= dr)
  38.         if(v[i] < v[j])
  39.             c[k++] = v[i++];
  40.         else
  41.             c[k++] = v[j++];
  42.     while(i <= mij)
  43.         c[k++] = v[i++];
  44.     while(j <= dr)
  45.         c[k++] = v[j++];
  46.     for(int i = 0; i < k; ++i)
  47.         v[i+st] = c[i];
  48.     afis(c, k);
  49. }
  50.  
  51. void afis(int c[], int k)
  52. {
  53.     for(int i = 0; i < k; ++i)
  54.         cout << c[i] << ' ';
  55.     cout << "\n";
  56. }
  57.  
  58. void divide(int v[], int st, int dr)
  59. {
  60.     if(st < dr)
  61.     {
  62.         int mij = (st + dr) / 2;
  63.         divide(v, st, mij);
  64.         divide(v, mij + 1, dr);
  65.         combina(v, st, mij, dr);
  66.     }
  67. }
  68.  
  69. void partitie_hoare(int v[], int st, int dr)
  70. {
  71.     int x, i, j;
  72.     x = v[(st + dr) / 2];
  73.     i = st;
  74.     j = dr;
  75.     while(i < j)
  76.     {
  77.         while(v[i] < x)
  78.             ++i;
  79.         while(v[j] > x)
  80.             --j;
  81.         if(i == j)
  82.             return;
  83.         else
  84.         {
  85.             int aux = v[i];
  86.             v[i] = v[j];
  87.             v[j] = aux;
  88.         }
  89.     }
  90.     return;
  91. }
  92.  
  93. void partitie2(int v[], int st, int dr)
  94. {
  95.     int x, i, j;
  96.     x = st;
  97.     i = st;
  98.     j = dr;
  99.     while(i < j)
  100.     {
  101.         while(v[i] < x)
  102.             ++i;
  103.         while(v[j] > x)
  104.             --j;
  105.         if(i == j)
  106.             return;
  107.         else
  108.         {
  109.             int aux = v[i];
  110.             v[i] = v[j];
  111.             v[j] = aux;
  112.         }
  113.     }
  114.     return;
  115. }
  116.  
  117. int gasire_pivot(int v[], int st, int dr)
  118. {
  119.  
  120. }
  121.  
  122. void divideQsort(int v[], int st, int dr)
  123. {
  124.     if(st < dr)
  125.     {
  126.         int p = gasire_pivot(v, st, dr);
  127.         divideQsort(v, st, p);
  128.         divideQsort(v, p+1, dr);
  129.     }
  130. }
  131.  
  132. int main()
  133. {
  134.     int a[100], dima;
  135.     int b[100], dimb;
  136.     int c[200], k = 0;
  137.     cit(a, dima);
  138.     //cit(b, dimb);
  139.     //interclas(a, dima, b, dimb, c, k);
  140.     //divide(a, 0, dima-1);
  141.     //divideQsort(a, 0, dima-1);
  142.     //partitie_hoare(a, 0, dima-1);
  143.     partitie2(a, 0, dima-1);
  144.     afis(a, dima);
  145.     return 0;
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement