Množina
Množina

Množina (set) je abstraktní datová struktura, která obsahuje hodnoty, aniž by garatovala jejich pořadí. Jelikož se jedná se o implementaci matematického termínu množina, tak tato struktura obsahuje každý prvek vždy maximálně jednou. Podobnou strukturou, která však smí obsahovat daný prvek vícekrát, je multimnožina. Pro implementaci systému navzájem se nepřekrývajících podmnožin používáme datovou strukturu disjoint-set.

Implementace

Nejjednodušším způsobem implementace množiny je použít seznam, zapomenout na pořadí prvků a při vkládání vždy hlídat, aby se daný prvek neobjevil v množině vícekrát. Ač je tento postup přímočarý, tak je velice neefektivní, protože je pro vyhledání prvku nutné v krajním případě projít celou množinu (tj. asymptotická složitost O(n)). Z tohoto důvodu se pro ukládání dat do množiny používá většinou hashovací tabulka (hash table), která zajistí přístup k jednotlivým prvkům průměrně v konstantním čase.


Kód

 /**
  * Mnozina implementovana jako list
  * @author Pavel Micka
  * @param <ENTITY> typovy parametr obsahu
  */
 public class Set<ENTITY> {
     private List<ENTITY> list;
     /**
      * Konstruktor
      * @param initialCapacity kapacita, se kterou je inicializovan podrizeny seznam
      */
     public Set(int initialCapacity) {
         list = new ArrayList<ENTITY>(initialCapacity);
     }
 
     /**
      * Vlozi entitu do mnoziny
      * @param e entita
      * @return true - pokud probehne vlozeni uspesne, false pokud jiz mnozina
      * danou entitu obsahuje (dle equals())
      */
     public boolean put(ENTITY e) {
         if (list.contains(e)) return false;
         list.add(e);
         return true;
     }
 
     /**
      * Vrati nejaky prvek z mnoziny (a z mnoziny jej take odstrani)
      * @return prvek, null pokud je mnozina prazdna
      */
     public ENTITY pick() {
         if(list.size() == 0) return null;
         return list.remove(list.size() - 1);
     }
 
     /**
      * Odstrani z mnoziny danou entitu
      * @param e entita
      * @return true - pokud mnozina obsahovala danou entitu, false - pokud nikoliv
      */
     public boolean remove(ENTITY e) {
         return list.remove(e);
     }
 
     /**
      *
      * Dotaz na pritomnost dane entity
      * @param e entita
      * @return true - pokud jej mnozina obsahuje, false - pokud nikoliv
      */
     public boolean contains(ENTITY e) {
         return list.contains(e);
     }
     /**
      * Dotaz na velikost mnoziny
      * @return pocet prvku
      */
     public int size() {
         return list.size();
     }
 }
 

SEO od společnosti Digital Pylon


Online casino s algoritmem

České casino online online slot-vegas.cz

Hrajte nejlepší hry jako je GoodGame Empire.





Zajímavé články: Jak najít práci snů? Zvolte kariéru v IT!, Češi mají rádi hrací automaty online, Jak funguje algoritmické obchodování Casino, Online výuka Algoritmus a online marketing mají svá pravidla, Automaty, Matematický vliv, Ratings, Jak fungují algoritmy hazardních her online: více znalostí, více peněz, SYPWAI - nástroj pro vědecký vývoj, Vynikají na globálním trhu: Nejlepší vývojáři softwaru pro online výherní automaty, Jak si vybrat nejlepší české online casino, Proč byste měli hrát online casino VPN revoluce, Kde najdeme algoritmy v každodenním životě?, Čeká vás pracovní pohovor mimo město? Podívejte se, jak dokonale zvládnout včasný příchod, 5 úžasných technologií ze světa hazardních her, Mirror and access to Mostbet, Svou kancelář můžete mít stále po ruce, Jaké výhody má digitalizovaná firma oproti off-line konkurenci?, Jaký systém vybrat pro snadné řízení výroby?, Nahradí umělá inteligence ajťáky?, Důvody, proč používat SnapTik ke stahování videí TikTok, Dokonalý den na pláži: Co si vzít s sebou, aby byl výlet zábavný a bezpečný?, Jak přežít dlouhý let?, Go pay GoodGame Empire, Blockchain, Rozhovor


Doporučujeme

Internet pro vaši firmu na míru

https://www.algoritmy.net