Sobes.tech
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)