Advertisement
aimon1337

Metode de sortare divide et impera.

Jan 20th, 2020
359
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. // Merge Sort
  2. int a[500], n;
  3. void ic(int i, int m, int j)
  4. {
  5.     int b[500];
  6.     int x=i, k=1, y=m+1;
  7.     while(x<=m && y<=j)
  8.         if(a[x]<a[y])
  9.             b[k++]=a[x++];
  10.         else
  11.             b[k++]=a[y++];
  12.     while(x<=m)
  13.         b[k++]=a[x++];
  14.     while(y<=j)
  15.         b[k++]=a[y++];
  16.     int t=i;
  17.     for(k=1; k<=(j-i)+1; ++k)
  18.         a[t++]=b[k];
  19. }
  20. void ms(int i, int j)
  21. {
  22.     if(i<j)
  23.     {
  24.         int m=(i+j)/2;
  25.         ms(i,m);
  26.         ms(m+1,j);
  27.         ic(i,m,j);
  28.     }
  29. }
  30.  
  31.  
  32. // QuickSort
  33. int x[1000],n;
  34. int poz(int p, int u)
  35. {
  36.     int piv,aux,k;
  37.     piv=x[p];
  38.     while(p<u)
  39.     {
  40.         if(x[p]>x[u])
  41.         {
  42.             aux=x[p];
  43.             x[p]=x[u];
  44.             x[u]=aux;
  45.         }
  46.         if(x[p]==piv)
  47.             u--;
  48.         else
  49.             p++;
  50.     }
  51.     k=p;
  52.     return k;
  53. }
  54. void qs(int p, int u)
  55. {
  56.     int k;
  57.     if(p<u)
  58.     {
  59.         k=poz(p,u);
  60.         qs(p,k-1);
  61.         qs(k+1,u);
  62.     }
  63. }
  64.  
  65.  
  66. // Sortare prin insertie binara
  67. int cb(int a[], int item, int li, int ls)
  68. {
  69.     if (ls <= li)
  70.         return (item > a[li])? (li + 1): li;
  71.     int mid = (li + ls)/2;
  72.     if(item == a[mid])
  73.         return mid+1;
  74.     if(item > a[mid])
  75.         return cb(a, item, mid+1, ls);
  76.     return cb(a, item, li, mid-1);
  77. }
  78.  
  79. void insertionSort(int a[], int n)
  80. {
  81.     int i, loc, j, k, sel;
  82.  
  83.     for (i = 1; i < n; ++i)
  84.     {
  85.         j = i - 1;
  86.         sel = a[i];
  87.         loc = cb(a, sel, 0, j);
  88.         while (j >= loc)
  89.         {
  90.             a[j+1] = a[j];
  91.             j--;
  92.         }
  93.         a[j+1] = sel;
  94.     }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement