diff --git a/projekt 2/main.cpp b/projekt 2/main.cpp index 2ad81e3..fd5c1f7 100644 --- a/projekt 2/main.cpp +++ b/projekt 2/main.cpp @@ -32,6 +32,11 @@ int h(int x, int m, int i){ } }; +int h_kw(int x, int m, int i){ + g_counter++; + return ((x % m) + (2 * i * i) - (5*i)) % m; +}; + /** Funkcja wstawiajaca jeden element x do tablicy mieszajacej tab o rozmiarze m @param A tablica mieszajaca @param m rozmiar tablicy mieszajacej @@ -52,13 +57,13 @@ bool hash_al_wstaw(int * A, int m, int x) return false; } - bool hash_al_szukaj(int x, int m, int * A){ - for (int i = 0; i < m; i++) { - int k = h(x, i, m); - if (A[k] == x){ return true;} - if (A[k] == EMPTY){ return false;} - } - return false; +bool hash_al_szukaj(int * A, int m, int x){ + for (int i = 0; i < m; i++) { + int k = h(x, m, i); + if (A[k] == x){ return true;} + if (A[k] == EMPTY){ return false;} + } + return false; } int main() @@ -169,6 +174,38 @@ int main() } + std::cerr << std::endl; + for(double range : {0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9}){ + for (int i = 0; i < m ; i++) + { + tab[i] = EMPTY; + } + + g_counter = 0; + for (int i = 0; i < range*m; i++) { + hash_al_wstaw(tab, m, dane[i]); + } + + + g_counter = 0; + // Mierzenie czasu, przyklad: + std::cerr << "Pomiar wyszukiwania dla " << range*100 << "%\n"; + int idx=0; + int krok = (range*m)/10000; + auto start = std::chrono::high_resolution_clock::now(); + for (int i = 0; i < 10000; i++) { + hash_al_szukaj(tab, m, dane[idx]); + idx = idx+krok; + + } + auto stop = std::chrono::high_resolution_clock::now(); + std::chrono::duration czas = stop - start; + std::cerr << "Uplynelo: " << czas.count() << " us\n"; + std::cerr << "Ilość wywołań funkcji szukającej: " << g_counter << "\n"; + + + + } //...