Junior — Middle
Ինչպե՞ս որոշվում է ժամանակային բարդությունը ArrayList-ին տարր ավելացնելիս։
sobes.tech AI
Պատասխան AI-ից
ArrayList-ի տարր ավելացնելու ժամանակային բարդությունը սովորաբար ամորտիզացված է O(1)-ի։ Դա պայմանավորված է նրանով, որ՝
- Եթե
ArrayList-ի ներքին զանգվածը ազատ տեղ ունի, նոր տարրը պարզապես գրանցվում է հաջորդ դիրքում — գործողությունը տևում է հաստատուն ժամանակ O(1)։ - Եթե ներքին զանգվածը լեցուն է, տեղի է ունենում ընդլայնում՝ ստեղծվում է ավելի մեծ չափի նոր զանգված և բոլոր տարրերը պատճենվում են այնտեղ։ Այս գործողությունը տևում է O(n), որտեղ n — ցուցակի ընթացիկ չափը։
Սակայն, ընդլայնումը տեղի չի ունենում յուրաքանչյուր ավելացման ժամանակ, այլ ժամանակ առ ժամանակ, այդպիսով, ավելացման միջին (ամորտիզացված) բարդությունը մնում է O(1)։
Օրինակ՝
ArrayList<Integer> list = new ArrayList<>();
list.add(10); // Ամորտիզացված O(1)