Advertisement
Guest User

Untitled

a guest
Dec 11th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. #include "stdafx.h"
  2.  
  3. #include <stdio.h>
  4. #include <tchar.h>
  5. #include <random>
  6. #include <fstream>
  7. #include <iostream>
  8. #include <algorithm>
  9. #include <time.h>
  10.  
  11. void generuoti(int _N, const char *_file);
  12. void nuskaityti(const char *_file);
  13.  
  14.  
  15. void sort_merge();
  16.  
  17.  
  18. using namespace std;
  19.  
  20. double *Data;
  21. double* A;
  22. double* B;
  23. int N;
  24.  
  25. int main()
  26. {
  27. srand(time(NULL));
  28. cout << "generuojame atsitktinius duomenis " << endl;
  29. generuoti(20, "duom.txt");
  30. cout << "nuskaitome duomenis " << endl;
  31. nuskaityti("duom.txt");
  32. A = new double[N];
  33. B = new double[N];//jeigu algoritmui reikia papildomo masyvo
  34. for (int i = 0; i < N; i++) {
  35. A[i] = Data[i];
  36. }
  37.  
  38. cout << "pradine skaiciu seka:" << endl;
  39. for (int i = 0; i < N; i++)
  40. cout << A[i] << " ";
  41. cout << endl;
  42. sort_merge();
  43. cout << "surusiuota skaiciu seka:" << endl;
  44. for (int i = 0; i < N; i++)
  45. cout << A[i] << " ";
  46. cout << endl;
  47.  
  48. system("pause");
  49. return 0;
  50. }
  51.  
  52. void generuoti(int _N, const char *_file) {
  53. ofstream os(_file);
  54. os << _N << endl;
  55. for (int i = 0; i<_N; i++)
  56. os << " " << (double)(rand() % 1001) / (double)1000;
  57. os.close();
  58. }
  59.  
  60. void nuskaityti(const char *_file) {
  61. ifstream is(_file);
  62. if (is.fail()) {
  63. cout << "failo nera" << endl;
  64. exit(1);
  65. }
  66. is >> N;
  67. Data = new double[N];
  68. for (int i = 0; i < N; i++) {
  69. is >> Data[i];
  70. }
  71. }
  72.  
  73.  
  74. void MergeSort(int l, int r);
  75. void Merge(int l, int m, int r);
  76.  
  77. void sort_merge() {
  78. int l = 0;
  79. int r = N - 1;
  80. MergeSort(l, r);
  81. }
  82.  
  83. void MergeSort(int l, int r) {
  84. if (l<(r))
  85. {
  86. int m = (l + r) / 2;
  87. MergeSort(l, m);
  88. MergeSort(m + 1, r);
  89. Merge(l, m, r);
  90. }
  91.  
  92. }
  93.  
  94. void Merge(int low, int mid, int high)
  95. {
  96. int h, i, j, k;
  97. h = low;
  98. i = low;
  99. j = mid + 1;
  100.  
  101. while ((h <= mid) && (j <= high))
  102. {
  103. if (A[h] <= A[j])
  104. {
  105. B[i] = A[h];
  106. h++;
  107. }
  108. else
  109. {
  110. B[i] = A[j];
  111. j++;
  112. }
  113. i++;
  114. }
  115. if (h>mid)
  116. {
  117. for (k = j;k <= high;k++)
  118. {
  119. B[i] = A[k];
  120. i++;
  121. }
  122. }
  123. else
  124. {
  125. for (k = h;k <= mid;k++)
  126. {
  127. B[i] = A[k];
  128. i++;
  129. }
  130. }
  131. for (k = low;k <= high;k++) A[k] = B[k];
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement