| Hjem | Hardware | Netværk | Programmering | software | Fejlfinding | systemer | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringssprog
  • Delphi programmering
  • Java programmering
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl programmering
  • Python Programming
  • Ruby Programming
  • Visual Basics Programmering
  •  
    Computer Viden >> Programmering >> Java programmering >> Content
    Hvad er tidskompleksiteten af ​​prioriterede køoperationer i Java?
    Tidskompleksiteten af ​​almindelige operationer på en 'prioritetsqueue' i Java afhænger af den specifikke operation. Her er en sammenbrud:

    * `Tilføj (e)` / `tilbud (e e)` (indsættelse): O (log n) - Dette skyldes, at den prioriterede kø skal opretholde sin bunkeegenskab, som kræver signing af det nye element op eller ned ad bunken.

    * `Fjern ()` / `Poll ()` (Fjernelse af det højeste prioriterede element): O (log n) - Fjernelse af rodelementet (højeste prioritet) nødvendiggør udskiftning af det med det sidste element og derefter sigte udskiftningselementet ned ad bunken for at gendanne dyngen.

    * `peek ()` (adgang til det højeste prioriterede element): O (1) - PEECHING AT HØJESTE PRIORITET Element (roden af ​​dyngen) er en direkte adgangsoperation.

    * `indeholder (objekt o)`: O (n) - Dette kræver iterering gennem elementerne i køen for at kontrollere for lighed. Priorityqueues i Java giver ikke en effektiv måde at kontrollere for indeslutning på.

    * `Fjern (objekt o)`: O (n) - I lighed med `Indeholder ()` indebærer dette iterering gennem elementerne for at finde og fjerne det specificerede objekt. Efter fjernelse af objektet skal heap -egenskaben opretholdes, som i værste fald kan tage O (n) tid. (Fjernelse af et vilkårligt element er ikke en standardprioritetskødrift, og ydelsen afspejler dette.)

    * `størrelse ()`: O (1) - Størrelsen opretholdes som en medlemsvariabel, så adgang til det er en konstant tidsoperation.

    * `isEmpty ()`: O (1) - Kontroller blot, om størrelsen er 0.

    * `klar ()`: O (n) - fjerner alle elementer fra køen. Mens individuel fjernelse af element kan tage O (log n), tager det at rydde hele køen O (n). I nogle implementeringer kan dette faktisk implementeres som O (1) ved blot at nulstille det interne array og størrelse.

    * `iterator ()`: O (1) - Returnerer en iterator i prioritetskøen. Iteratoren i sig selv er * ikke * bestilt, og iterering gennem elementerne vil være O (n).

    Vigtige overvejelser:

    * `PriorityQueue 'implementeres som en binær bunke. Heap -datastrukturen er det, der giver den sin logaritmiske ydelse til indsættelse og fjernelse af det højeste prioriterede element.

    * komparatoren er afgørende. Sammenligneren (eller den naturlige rækkefølge af elementerne, hvis der ikke gives nogen komparator) er det, der bestemmer elementernes prioritet. Sammenlignerens 'sammenligne ()' -metoden skal være effektiv (typisk O (1)) for den samlede prioriterede køoperationer for at opretholde deres angivne kompleksitet.

    * Fjernelse af vilkårlige elementer (`Fjern (objekt O)`) er ineffektivt. Hvis du ofte har brug for at fjerne vilkårlige elementer fra en prioriteret kø, skal du overveje at bruge en anden datastruktur eller en kombination af datastrukturer (f.eks. Et `Treeset` kombineret med en` hashmap 'til at spore elementpositioner). Standardprioritetskøer er optimeret for effektiv adgang til det højeste prioriterede element.

    Kortfattet:

    De vigtigste operationer for `tilføj ()` og `Fjern ()` (af det * højeste * prioriterede element) er O (log n), hvilket gør `prioritetQueue 'et meget effektivt valg for scenarier, hvor du har brug for at opretholde en sorteret samling og gentagne gange få adgang til eller fjerne minimumet (eller maksimum, afhængigt af dit sammenligningselement).

    Forrige :

    næste : No
      Relaterede artikler
    ·Sådan installeres Java XP 
    ·Java Recursion Tutorial 
    ·Sådan Læs xls -filer i Java 
    ·Sådan vises en Cylinder i Java 
    ·Sådan har User Input Decimaler i Java 
    ·Hvordan man laver en pyramide af tegn ved hjælp Java 
    ·Definition For JDK 
    ·Hvordan kan man øge tekstfeltet Størrelse i en Java-a…
    ·Hvordan man laver en animation Ikon i en JTable 
    ·Sådan Læs et Word dokument med Java 
      Anbefalede Artikler
    ·Visual Basic Tutorial for begyndere 
    ·Sådan bruges Java til at skabe Web Service Apps 
    ·Hvad Er NETFx Folder 
    ·Sådan oprettes en Scheduler i Visual Basic 
    ·Debugging en Access Overtrædelse 
    ·Hvad Er Syntaks protokoller 
    ·Hvilken type computer kører generelt et program ad gan…
    ·Sådan Konverter LPSTR til INT 
    ·Sådan Code en Login /Registration Form i VB 
    ·Introduktion til Visual Basic 6.0 
    Copyright © Computer Viden https://www.computerdk.com