Advertisement
Guest User

Untitled

a guest
May 28th, 2015
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.67 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. #include <fstream>
  5. #include <string>
  6. #include <algorithm>
  7. #include "Timer.cpp"
  8.  
  9. using namespace std;
  10.  
  11. int *stworz(int *tablica, int rozmiar);
  12. void wyswietl(int *tablica, int rozmiar);
  13.  
  14. void zamien(int &a, int &b);
  15. void babelkowe(int *tablica, int rozmiar);
  16. void wstawianie(int *tablica, int rozmiar);
  17.  
  18. void scalanie(int *tablica, int lewy, int prawy);
  19. void scal(int *tablica, int lewy, int srodek, int prawy);
  20.  
  21. void scal(int *tablica, int start, int srodek, int koniec);
  22. void scalanie(int *tablica, int start, int koniec);
  23.  
  24. int main(){
  25. srand(time(NULL));
  26. Timer timer;
  27. const int rozmiar = 1E7;
  28. int *tablica = new int[rozmiar];
  29. tablica = stworz(tablica, rozmiar);
  30. timer.start_counter();
  31. scalanie(tablica, 0, rozmiar);
  32. timer.stop_counter();
  33. cout << timer.get_elapsed_time() << endl;
  34. system("pause");
  35. }
  36.  
  37. int *stworz(int *tablica, int rozmiar){
  38. const int min = 50;
  39. const int maks = 100;
  40. for (int i = 0; i < rozmiar; i++){
  41. tablica[i] = (std::rand() % maks - min) + min;
  42. }
  43. return tablica;
  44. }
  45.  
  46. void wyswietl(int *tablica, int rozmiar){
  47. for (int i = 0; i < rozmiar; i++){
  48. cout << tablica[i] << " ";
  49. }
  50. cout << " "; system("pause"); cout << endl;
  51. }
  52.  
  53. void zamien(int &a, int &b){
  54. int tmp = b;
  55. b = a;
  56. a = tmp;
  57. }
  58.  
  59. void babelkowe(int *tablica, int rozmiar){
  60. bool wyz;
  61. do{
  62. wyz = false;
  63. for (int i = 0; i < rozmiar - 1; ++i) {
  64. if (tablica[i] > tablica[i + 1]) {
  65. zamien(tablica[i], tablica[i + 1]);
  66. wyz = true;
  67. }
  68. }
  69. } while (wyz);
  70. }
  71.  
  72. void wstawianie(int *tablica, int rozmiar){
  73. int temp, j;
  74. for (int i = 1; i < rozmiar; i++)
  75. {
  76. temp = tablica[i];
  77.  
  78. for (j = i - 1; j >= 0 && tablica[j] > temp; j--)
  79. tablica[j + 1] = tablica[j];
  80.  
  81. tablica[j + 1] = temp;
  82. }
  83. }
  84.  
  85. void scal(int *tablica, int start, int srodek, int koniec)
  86. {
  87. int *tab_pom = new int[(koniec - start)];
  88. int i = start, j = srodek + 1, k = 0;
  89.  
  90. while (i <= srodek && j <= koniec)
  91. {
  92. if (tablica[j] < tablica[i])
  93. {
  94. tab_pom[k] = tablica[j];
  95. j++;
  96. }
  97. else
  98. {
  99. tab_pom[k] = tablica[i];
  100. i++;
  101. }
  102. k++;
  103. }
  104.  
  105. if (i <= srodek)
  106. {
  107. while (i <= srodek)
  108. {
  109. tab_pom[k] = tablica[i];
  110. i++;
  111. k++;
  112. }
  113. }
  114. else
  115. {
  116. while (j <= koniec)
  117. {
  118. tab_pom[k] = tablica[j];
  119. j++;
  120. k++;
  121. }
  122. }
  123.  
  124. for (i = 0; i <= koniec - start; i++){
  125. tablica[start + i] = tab_pom[i];
  126. }
  127. }
  128.  
  129. void scalanie(int *tablica, int start, int koniec)
  130. {
  131. int srodek;
  132.  
  133. if (start != koniec)
  134. {
  135. srodek = (start + koniec) / 2;
  136. scalanie(tablica, start, srodek);
  137. scalanie(tablica, srodek + 1, koniec);
  138. scal(tablica, start, srodek, koniec);
  139. }
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement