Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // projekt2.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <random>
- #include <iostream>
- #include <chrono>
- #include <thread>
- #include <random>
- int dekad = 0;
- int ilosc_elem = 0;
- int losowa_liczba(int min = 0, int max = std::numeric_limits<int>::max())
- {
- static std::default_random_engine gen(std::random_device{}());
- static std::uniform_int_distribution<int> dist;
- return dist(gen, std::uniform_int_distribution<int>::param_type{ min, max });
- }
- bool wstaw(int liczba, int miejsce,int tablica[])
- {
- if (tablica[miejsce] == -1)
- {
- tablica[miejsce] = liczba;
- ilosc_elem++;
- return true;
- }
- else
- return false;
- }
- void hash(int tablica[], int tablica_mieszaj[], int rozmiar, int rozmiar_mieszaj)
- {
- for (int i = dekad ;i<dekad+10000 ;i++)
- {
- int licznik = 1;
- int place = tablica[i] % rozmiar_mieszaj;
- bool index = wstaw(tablica[i], place, tablica_mieszaj);
- if (index)
- continue;
- else
- {
- bool flag = false;
- while (!flag)
- {
- place = (place + licznik) % rozmiar_mieszaj;
- flag = wstaw(tablica[i], place, tablica_mieszaj);
- licznik++;
- }
- }
- licznik = 0;
- }
- dekad += 10000;
- }
- int main()
- {
- int rozmiar_mieszaj =1000000;
- int rozmiar = 100000;
- int* tablica = new int[rozmiar];
- int* tablica_mieszaj = new int[rozmiar_mieszaj];
- for (int i = 0; i < rozmiar;i++)
- {
- tablica[i] = losowa_liczba();
- }
- for (int i = 0; i < rozmiar_mieszaj;i++)
- {
- tablica_mieszaj[i] = -1;
- }
- int liczba = 0;
- while (ilosc_elem < rozmiar_mieszaj)
- {
- if (ilosc_elem % 100000 == 0)
- {
- auto start = std::chrono::high_resolution_clock::now();
- hash(tablica, tablica_mieszaj, rozmiar, rozmiar_mieszaj);
- auto end = std::chrono::high_resolution_clock::now();
- std::chrono::duration<double, std::micro> duration = end - start;
- std::cout << "Dla zapelnienia tablicy: " <<liczba << "0% Uplynelo: " << duration.count()/10000 << "s\n";
- dekad = 0;
- liczba++;
- }
- else
- hash(tablica, tablica_mieszaj, rozmiar, rozmiar_mieszaj);
- }
- delete[] tablica;
- delete[] tablica_mieszaj;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement