Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. #include <iostream>
  2. #include <chrono>
  3. #include <thread>
  4. #include <random>
  5. #include <algorithm>
  6. using namespace std;
  7. long int rozmiar_zbior = 12000000;
  8. int rozmiar_mieszajaca = 1048576;
  9. double licznik = 0;
  10. double counter = 0;
  11.  
  12. bool wstaw(int *tablica, int rozmiar, int x) {
  13.  
  14. int k;
  15. for (int i = 0; i<rozmiar; i++) {
  16.  
  17. if(i == 0) k = x % rozmiar;
  18. else k = (x % rozmiar + i) % rozmiar;
  19. licznik++;
  20. //k = ( ((x % rozmiar) + i*((((x/rozmiar) % (rozmiar/2)) * 2) + 1)) % rozmiar);
  21.  
  22. if(tablica[k] == -1) {
  23. tablica[k] = x;
  24. return true;
  25. }
  26. }
  27. return false;
  28. }
  29.  
  30. bool szukaj(int *tablica, int rozmiar, int liczba) {
  31. int k;
  32. for(int i=0; i<rozmiar; i++) {
  33.  
  34. if(i == 0) k = liczba % rozmiar;
  35. else k = (liczba % rozmiar + i) % rozmiar;
  36.  
  37. if(tablica[k] == liczba) return true;
  38. if(tablica[k] == -1) return false;
  39. }
  40. return false;
  41. }
  42.  
  43. int main() {
  44.  
  45. // Testowy zbiór liczb do wstawiania do tablicy mieszajacej
  46.  
  47. int *tab_zbior = new int [rozmiar_zbior];
  48. int *tab_miesz = new int [rozmiar_mieszajaca];
  49.  
  50. for(int i=0; i<rozmiar_zbior; i++) {
  51. tab_zbior[i] = i;
  52. }
  53.  
  54. std::random_shuffle(tab_zbior, tab_zbior+rozmiar_zbior);
  55.  
  56.  
  57.  
  58.  
  59. cout << "Wstawianie\n";
  60.  
  61. for (int n = 0; n < 10; n++) {
  62.  
  63. for(int i=0; i<rozmiar_mieszajaca; i++) {
  64. tab_miesz[i] = -1;
  65. }
  66.  
  67. for (int i = 0; i < n * (rozmiar_mieszajaca/10); i++)
  68. {
  69. wstaw(tab_miesz, rozmiar_mieszajaca, tab_zbior[i]);
  70. }
  71. licznik = 0;
  72. auto start = std::chrono::high_resolution_clock::now();
  73. for (int i = 0; i < 10000; i++)
  74. {
  75. wstaw(tab_miesz, rozmiar_mieszajaca, tab_zbior[n*(rozmiar_mieszajaca/10)+i]);
  76. }
  77.  
  78. auto end = std::chrono::high_resolution_clock::now();
  79. std::chrono::duration<double, std::micro> duration = end - start;
  80. std::cerr << n << "0% -> Czas wstawianie: " << duration.count() / 10000 << "us\n";
  81. std::cout << n << "ilosc wywolan : " << licznik / 10000 << "\n";
  82. }
  83. // for(int i=0; i<rozmiar_mieszajaca; i++) {
  84. // wstaw(mieszajaca, rozmiar_mieszajaca, tablica[i]);
  85. // cout << tablica[i] << endl;
  86. // }
  87. // mieszajaca[23] = 5;
  88. // bool t = szukaj(mieszajaca, rozmiar_mieszajaca, 5);
  89. // cout << t;
  90.  
  91.  
  92.  
  93.  
  94. return 0;
  95.  
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement