Advertisement
Guest User

Untitled

a guest
May 23rd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. // projekt2.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <random>
  6. #include <iostream>
  7. #include <chrono>
  8. #include <thread>
  9. #include <random>
  10.  
  11. int dekad = 0;
  12. int ilosc_elem = 0;
  13. int losowa_liczba(int min = 0, int max = std::numeric_limits<int>::max())
  14. {
  15. static std::default_random_engine gen(std::random_device{}());
  16. static std::uniform_int_distribution<int> dist;
  17. return dist(gen, std::uniform_int_distribution<int>::param_type{ min, max });
  18. }
  19.  
  20.  
  21. bool wstaw(int liczba, int miejsce,int tablica[])
  22. {
  23. if (tablica[miejsce] == -1)
  24. {
  25. tablica[miejsce] = liczba;
  26. ilosc_elem++;
  27. return true;
  28. }
  29. else
  30. return false;
  31. }
  32.  
  33. void hash(int tablica[], int tablica_mieszaj[], int rozmiar, int rozmiar_mieszaj)
  34. {
  35. for (int i = dekad ;i<dekad+10000 ;i++)
  36. {
  37. int licznik = 1;
  38. int place = tablica[i] % rozmiar_mieszaj;
  39. bool index = wstaw(tablica[i], place, tablica_mieszaj);
  40.  
  41. if (index)
  42. continue;
  43. else
  44. {
  45. bool flag = false;
  46. while (!flag)
  47. {
  48. place = (place + licznik) % rozmiar_mieszaj;
  49. flag = wstaw(tablica[i], place, tablica_mieszaj);
  50. licznik++;
  51. }
  52. }
  53. licznik = 0;
  54. }
  55. dekad += 10000;
  56. }
  57.  
  58.  
  59.  
  60.  
  61. int main()
  62. {
  63.  
  64. int rozmiar_mieszaj =1000000;
  65. int rozmiar = 100000;
  66. int* tablica = new int[rozmiar];
  67. int* tablica_mieszaj = new int[rozmiar_mieszaj];
  68.  
  69. for (int i = 0; i < rozmiar;i++)
  70. {
  71. tablica[i] = losowa_liczba();
  72.  
  73. }
  74. for (int i = 0; i < rozmiar_mieszaj;i++)
  75. {
  76. tablica_mieszaj[i] = -1;
  77. }
  78.  
  79. int liczba = 0;
  80. while (ilosc_elem < rozmiar_mieszaj)
  81. {
  82. if (ilosc_elem % 100000 == 0)
  83. {
  84. auto start = std::chrono::high_resolution_clock::now();
  85. hash(tablica, tablica_mieszaj, rozmiar, rozmiar_mieszaj);
  86. auto end = std::chrono::high_resolution_clock::now();
  87. std::chrono::duration<double, std::micro> duration = end - start;
  88. std::cout << "Dla zapelnienia tablicy: " <<liczba << "0% Uplynelo: " << duration.count()/10000 << "s\n";
  89. dekad = 0;
  90. liczba++;
  91. }
  92. else
  93. hash(tablica, tablica_mieszaj, rozmiar, rozmiar_mieszaj);
  94.  
  95. }
  96.  
  97.  
  98. delete[] tablica;
  99. delete[] tablica_mieszaj;
  100. return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement