Advertisement
Guest User

Sortowanie przez scalanie

a guest
Oct 31st, 2014
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.84 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int *temp;
  5.  
  6. void merge(int tab[], int left, int middle, int right){
  7. int i, j;
  8. for (i = middle+1; i > left; i--){
  9. temp[i-1] = tab[i-1];
  10. }
  11. for (j = middle ; j < right; j++){
  12. temp[right + middle-j] = tab[j+1];
  13. }
  14. for (int k = left; k <= right; k++){
  15. if (temp[j] < temp[i])
  16. tab[k] = temp[j--];
  17. else
  18. tab[k] = temp[i++];
  19. }
  20. }
  21.  
  22. void merge_sort(int tab[], int left, int right){
  23. if (right <= left) return;
  24.  
  25. int middle = (left + right) / 2;
  26.  
  27. merge_sort(tab, left, middle);
  28. merge_sort(tab, middle + 1, right);
  29.  
  30. merge(tab, left, middle, right);
  31.  
  32. }
  33.  
  34. int main(int argc, char** argv) {
  35. int n ;
  36. cin >> n;
  37. int tab[n];
  38. for (int i = 0; i<n; i++){
  39. cin >> tab[i];
  40. }
  41. merge_sort(tab, 0, n - 1);
  42. for (int i = 0; i < n; i++){
  43. cout << tab[i] << endl;
  44. }
  45. return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement