Advertisement
IISergeyII

Untitled

May 19th, 2018
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.89 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <algorithm>
  4. #include <math.h>
  5. #include <vector>
  6. #include <fstream>
  7.  
  8. using namespace std;
  9.  
  10. const int N = 5;
  11.  
  12. void mySwap(int &a, int &b) {
  13.     int t = a;
  14.     a = b;
  15.     b = t;
  16. }
  17.  
  18. void printArray(int arr[]) {
  19.     for (int i = 0; i < N; i++) {
  20.         cout << arr[i] << " ";
  21.     }
  22.     cout << endl;
  23. }
  24.  
  25. // =============== Quick Sort ===============
  26. void quickSort(int A[],int left, int rigth) {
  27.     int i = left, j = rigth;
  28.     int pivot = A[(rigth + left)/2];
  29.  
  30.     while (i <= j) {
  31.             printArray(A);
  32.         while (A[i] < pivot) i++;
  33.         while (A[j] > pivot) j--;
  34.  
  35.         if (i <= j) {
  36.             mySwap(A[i], A[j]);
  37.             i++;
  38.             j--;
  39.         }
  40.  
  41.     }
  42.  
  43.     if (left < j) quickSort(A, left, j);
  44.     if (rigth > i) quickSort(A, i, rigth);
  45. }
  46.  
  47. // =============== Merge Sort ===============
  48.  
  49. void myMerge(int A[], int l, int m, int r) {
  50.     int i, j, k;
  51.     int n1 = l-m + 1;
  52.     int n2 = r-m;
  53.  
  54.     int L[n1], R[n2];
  55.  
  56.     for (i = 0; i < n1; ++i) {
  57.         L[i] = A[l + i];
  58.     }
  59.     for (i = 0; i < n2; ++i) {
  60.         R[i] = A[m + 1 + i];
  61.     }
  62.  
  63.     i = 0;
  64.     j = 0;
  65.     k = l;
  66.     while (i < n1 && j < n2) {
  67.         if (L[i] <= R[j]) {
  68.             A[k] = L[i];
  69.             i++;
  70.         } else {
  71.             A[k] = R[j];
  72.             j++;
  73.         }
  74.         k++;
  75.     }
  76.  
  77.     while (i < n1) {
  78.         A[k] = L[i];
  79.         k++;
  80.         i++;
  81.     }
  82.     while (j < n2) {
  83.         A[k] = R[j];
  84.         j++;
  85.     }
  86.  
  87. }
  88.  
  89. void mergeSort(int A[],int left, int rigth) {
  90.     if (left < rigth) {
  91.         int m = A[(rigth + left)/2];
  92.  
  93.         mergeSort(A, left, m);
  94.         mergeSort(A, m+1, rigth);
  95.  
  96.         myMerge(A, left, m, rigth);
  97.     }
  98. }
  99.  
  100. int main()
  101. {
  102.     int a[N] = {7, 9, 5, 1, 3};
  103.  
  104.     quickSort(a, 0, N-1);
  105.     mergeSort(a, 0, N-1);
  106.     printArray(a);
  107.  
  108.     return 0;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement