Advertisement
Guest User

Untitled

a guest
Jun 11th, 2015
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. --- merge_sort.cpp.orig 2015-06-11 19:03:30.905330000 +0200
  2. +++ merge_sort.cpp 2015-06-11 19:12:19.393330000 +0200
  3. @@ -7,17 +7,17 @@
  4. using namespace std;
  5. int d [100];
  6.  
  7. +int N = 100;
  8. void mergeSort(int p, int k);
  9. void merge_ (int p, int q, int k);
  10. int main() {
  11. int i;
  12. - int N = 100;
  13. srand((unsigned)time(NULL));
  14. for(i = 0; i < N; i++) d[i] = rand() % 100;
  15. for(i = 0; i < N; i++) cout << setw(4) << d[i];
  16. cout << endl;
  17. //Sortujemy
  18. - mergeSort(0, 99);
  19. + mergeSort(0, N);
  20. // Wyświetlamy wynik sortowania
  21. cout << "Po sortowaniu:\n\n";
  22. for(i = 0; i < N; i++) cout << setw(4) << d[i];
  23. @@ -25,14 +25,11 @@
  24. return 0;
  25. }
  26. void mergeSort(int p, int k) {
  27. - for (int i=0; i<100; i++) {
  28. - cout << d[i] << "\n";
  29. - }
  30. - if (p<k) {
  31. + if ((k-p) > 1) {
  32. int q = p+k;
  33. q = q/2;
  34. mergeSort(p, q);
  35. - mergeSort(q+1, k);
  36. + mergeSort(q, k);
  37. merge_(p, q, k);
  38. }
  39. }
  40. @@ -43,22 +40,30 @@
  41. int* R = new int [n2];
  42. for (int i=0; i<n1; i++) {
  43. L[i] = d[p+i];
  44. - //cout << d[p+i] << "\n";
  45. - //cout << L[i] << "\n";
  46. }
  47. for (int i=0; i<n2; i++) {
  48. R[i] = d[q+i];
  49. }
  50. int i = 0;
  51. int j = 0;
  52. - for (int k=0; k<=r; k++) {
  53. - if (L[i]<=R[j]) {
  54. - d[k]=L[i];
  55. - i=i+1;
  56. + int k = 0;
  57. + for (k = p; (k < r) && (i < n1) && (j < n2); k++) {
  58. + if (L[i]<=R[j])
  59. + d[k]=L[i++];
  60. + else
  61. + d[k]=R[j++];
  62. + }
  63. + if (i < n1) {
  64. + for (; (k < r) && (i < n1); k++, i++) {
  65. + d[k] = L[i];
  66. }
  67. - else {
  68. - d[k]=R[j];
  69. - j=j+1;
  70. + } else if (j < n2) {
  71. + for (; (k < r) && (j < n2); k++, j++) {
  72. + d[k] = R[j];
  73. }
  74. }
  75. + delete[] L;
  76. + L = NULL;
  77. + delete[] R;
  78. + R = NULL;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement