Junior
Ինչքա՞ն է բարդությունը տարր ավելացնել ArrayList-ին:
sobes.tech AI
Պատասխան AI-ից
ArrayList-ի տարր ավելացնելու բարդությունը միջին դեպքերում կազմում է O(1):
Սա հասնում է դինամիկ զանգվածի օգտագործմամբ, և ավելացումը կատարվում է ցանկի վերջում:
// Ավելացում ցանկի վերջում
List<String> list = new ArrayList<>();
list.add("միավոր"); // միջին դեպքերում O(1)
Սակայն, եթե ArrayList-ի ներքին զանգվածը լցված է, անհրաժեշտ է մեծացման օպերացիա (resize): Դա ներառում է նոր, ավելի մեծ զանգվածի ստեղծում և բոլոր առկա տարրերի պատճենում նոր զանգվածին:
// Օրինակ, որտեղ կարող է տեղի ունենալ resize
List<Integer> numbers = new ArrayList<>(3); // սկզբնական ծավալը 3
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4); // Այստեղ կարող է տեղի ունենալ resize - O(n)
Եթե տարրն ավելացվում է ցանկի վերջում չէ (մեթոդ add(int index, E element)), այլ միջին կամ սկզբում, անհրաժեշտ է բոլոր հաջորդող տարրերը տեղափոխել աջ կողմ:
// Ավելացում սկզբում
List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add(0, "zero"); // Ավելացում սկզբում - O(n)
Այսպիսով, ArrayList-ին տարր ավելացնելու բարդությունը կախված է ավելացման վայրից և resize-ի անհրաժեշտությունից:
| Ավելացման գործողություն | Միջին դեպք | Ամենավատ դեպք (երբ կա resize կամ ավելացում չի կատարվում վերջում) |
|---|---|---|
add(E element) (վերջում) |
O(1) | O(n) |
add(int index, E element) |
O(n) | O(n) |