Advertisement
lewapkon

mergeSort.cpp

Mar 2nd, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const int N = 5;
  6.  
  7. void merge(int a[], int start, int middle, int end);
  8.  
  9. void mergeSort(int a[], int start, int end) {
  10.     int middle;
  11.     if (start < end) {
  12.         middle = (start + end) / 2;
  13.         mergeSort(a, start, middle);
  14.         mergeSort(a, middle + 1, end);
  15.         merge(a, start, middle, end);
  16.     }
  17. }
  18.  
  19. void merge(int a[], int start, int middle, int end) {
  20.     int h, i, j, k;
  21.     h = start;
  22.     i = start;
  23.     j = middle + 1;
  24.     int temp[N];
  25.    
  26.     while ((h <= middle) && (j <= end)) {
  27.         if (a[h] <= a[j]) {
  28.             temp[i] = a[h];
  29.             h++;
  30.         } else {
  31.             temp[i] = a[j];
  32.             j++;
  33.         }
  34.         i++;
  35.     }
  36.     if (h > middle)
  37.         for (k = j; k <= end; k++) {
  38.             temp[i] = a[k];
  39.             i++;
  40.         }
  41.     else
  42.         for (k = h; k <= middle; k++) {
  43.             temp[i] = a[k];
  44.             i++;
  45.         }
  46.    
  47.     for (k = start; k <= end; k++) {
  48.         a[k] = temp[k];
  49.     }
  50. }
  51.  
  52. int main(int argc, const char * argv[]) {
  53.     int a[N];
  54.     cout << "Podaj " << N << " cyfr:\n";
  55.     for (int i = 0; i < N; i++) {
  56.         cout << (i + 1) << ": ";
  57.         cin >> a[i];
  58.     }
  59.    
  60.     mergeSort(a, 0, N - 1);
  61.    
  62.     cout << endl;
  63.     for (int i = 0; i < N; i++) {
  64.         cout << a[i] << " ";
  65.     }
  66.    
  67.     cout << endl << endl;
  68.     //system("pause");
  69.     return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement