|  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> Computer Programspråk >> Content

    Vad är tidskomplexiteten för ett IF -uttalande på ett programmeringsspråk?

    Tidskomplexiteten för ett "if" -uttalande är i allmänhet o (1) , men med några viktiga varningar. Här är en uppdelning:

    Kärnidén:konstant tid

    * grenning är snabb: Den primära operationen i ett "if" -uttalande utvärderar villkoret och beslutar vilken gren som ska köras. Detta är en mycket snabb, deterministisk process som involverar en enda jämförelse (eller en serie booleska operationer som kan betraktas som begränsade). Moderna processorer är mycket optimerade för villkorad förgrening.

    * Oberoende av ingångsstorlek: Beslutet att utföra blocket "if" eller "annars" -blocket (eller varken om det inte finns något "annat") beror inte på storleken på den ingångsdata som behandlas av den omgivande algoritmen. Det beror bara på själva tillståndet.

    Varför O (1) kan vara vilseledande (sammanhangsfrågor!)

    Medan "if" -uttalandet * själv * är o (1), kan * koden * inuti "if" -blocket eller "annars" -blocket ha någon tidskomplexitet. Detta är avgörande. Tänk på dessa scenarier:

    1. o (1) if-block:

    `` `python

    Om x> 5:

    y =10 # o (1) Uppdrag

    z =x + y # o (1) Tillägg

    annan:

    y =20 # o (1) Uppdrag

    `` `

    I detta fall är uttalandet "if" och koden inom * båda * grenarna o (1). Den övergripande komplexiteten för detta utdrag är O (1).

    2. o (n) if-block:

    `` `python

    om len (my_list)> 0:

    för i inom räckvidd (len (my_list)):# o (n) slinga

    tryck (my_list [i])

    annan:

    utskrift ("Listan är tom") # o (1)

    `` `

    Här, om villkoret är sant, kör du en slinga som itererar genom "my_list", vilket gör komplexiteten i "if" gren o (n). Om villkoret är falskt kör du O (1) kod. Det * värsta fallet * komplexiteten i hela kodblocket är o (n), eftersom uttalandet "if" kan leda till att utföra O (n) -koden.

    3. o (n^2) if-block:

    `` `python

    Om villkor:

    för jag inom räckvidden (n):

    för J inom räckvidd (n):

    # Vissa O (1) operation

    passera

    annan:

    # O (1) Drift

    passera

    `` `

    I det här exemplet blir tidskomplexiteten o (n^2) på grund av de kapslade slingorna inuti "om" -uttalandet, även om utvärderingen av "if" -villkoret fortfarande är o (1).

    Sammanfattningsvis

    * Uttalets förgreningslogik är o (1).

    * Den övergripande tidskomplexiteten för koden som innehåller "if" -uttalandet beror helt på komplexiteten i koden * inuti * "if" och "annars" -blocken. Blocket med den högsta komplexiteten kommer att dominera.

    * När du analyserar algoritmer måste du överväga det värsta fallet, som vanligtvis involverar "if" -blocket med den högsta komplexiteten som genomförs.

    Därför, medan du kan säga att "if" * uttalandet i sig * tar ständig tid, måste du Analysera koden inuti grenarna för att bestämma den verkliga tidskomplexiteten för kodblocket som innehåller "if". Fokusera på den dominerande termen (kodblocket som tar längst att utföra när ingångsstorleken växer).

    Tidigare:

    nästa:
    relaterade artiklar
    ·Hur man gör en slumpvariabel Permanent
    ·Vad är blanktecken i Matlab
    ·Hur till Stopp Kör i COBOL
    ·Hur förklara en 3D Field i MATLAB
    ·Hur man använder LINQ att hitta Max i en lista
    ·Hur man gör en Autoit Script Infinite Loop
    ·VBScript : hur man återställer postlådestorlek
    ·Hur kopierar du en fil i PowerShell
    ·Hur skapa dynamiska webbsidor med PHP
    ·Hur man skriver en textruta till en fil C
    Utvalda artiklarna
    ·Hur man tar bort dubbletter från en ArrayList
    ·Komma åt VBA Datatyper
    ·Vad är en VB.NET Import
    ·Lägga till en skiva med SQL
    ·Hur man handskas med nästlade Tupler i Python
    ·Hur du använder 2D-objekt i CPP
    ·Vad är syftet med en JTAG-kontakt i datoranvändning?
    ·Hur man skriver ett freeware spel Program för klasslä…
    ·Hur man kompilerar C och C + + Together
    ·Hur man skapar en animerad bild PHP
    Copyright © Dator Kunskap https://www.dator.xyz