Big-O նշումը նշում է, որն օգտագործվում է ֆունկցիաների երկարաժամկետ աճի տեմպերի մասին խոսելու համար: Այն հաճախ օգտագործվում է ալգորիթմների վերլուծության համար, խոսելու ալգորիթմի կատարման կամ հարակից հասկացությունների մասին, ինչպիսիք են տարածության բարդությունը:

O(1) — Մշտական ​​կատարման ժամանակ.

Ալգորիթմը O(1) բարդության է, եթե այն պահանջում է մշտական ​​կատարման ժամանակ: Կատարման ժամանակը նույնն է՝ անկախ մուտքային արժեքների չափից։ Ով ասում է, որ կայունություն նույնպես ասում է O(1):

O(log n) — Լոգարիթմական կատարման ժամանակ.

Պարզապես լոգարիթմական միտումը էքսպոնենցիալ միտումի հակառակն է: Այնտեղ, որտեղ էքսպոնենցիալ միտումը ժամանակի ընթացքում կբազմապատկվի, լոգարիթմական միտումը կբաժանվի:

O(n) — Գծային կատարման ժամանակ`

Ալգորիթմի մասին ասում ենք, որ այն ունի O(n) բարդություն, եթե դրա կատարման ընթացքում նրանից պահանջվում է անցնել յուրաքանչյուր մուտքային տարր:

O(n log (n)) գծային բարդություն՝

օգտագործում է նույն մոտեցումը, ինչ լոգարիթմական բարդությունը, բացառությամբ, որ դա անում է n մուտքագրման յուրաքանչյուր տարրի վրա:

O(n²) — Քառակուսի/քառակուսի կատարման ժամանակ՝

Ալգորիթմը, որի կատարման ժամանակը ուղիղ համեմատական ​​է մուտքային տվյալների հավաքածուի չափի քառակուսուն, կոչվում է O(n²) բարդության:

O(k^n) — Էքսպոնենցիալ կատարման ժամանակ.

Ալգորիթմը, որի կատարման ժամանակը երկրաչափականորեն աճում է, աճում է k անգամ n-ի յուրաքանչյուր աճի համար:

Ակնհայտ է, որ որքան կարճ է կատարման ժամանակը, այնքան ավելի արդյունավետ է ալգորիթմը:

Բացի այդ, մենք օգտագործում ենք այս նշումը տարածության բարդության համար՝ որոշելու լրացուցիչ հիշողության անհրաժեշտությունը:

Ենթադրենք, ալգորիթմը չի պահանջում լրացուցիչ կամ ֆիքսված քանակի լրացուցիչ հիշողություն՝ կախված մուտքային արժեքների չափից: Այդ դեպքում տիեզերական բարդության մեջ այն կլինի O(1):

Ենթադրենք, որ ալգորիթմը պահանջում է մուտքային արժեքների նույն քանակությամբ լրացուցիչ հիշողություն: Այդ դեպքում տիեզերական բարդության մեջ այն կլինի O(n):

Եվ այսպես շարունակ։

Գիրք | Զանգվածներ ››