Big-O & Data Structures
Complexity classes and structure trade-offs.
Complexity classes (best → worst)
O(1)
constant — array indexO(log n)
logarithmic — binary searchO(n)
linear — scan onceO(n log n)
good sortingO(n²)
nested loops — avoid at scale
Structure operations (average)
- ArrayListget O(1), add-end O(1), insert O(n)
- LinkedListadd-ends O(1), get O(n)
- HashMap / HashSetget/put/contains O(1)
- TreeMap / TreeSetget/put O(log n), sorted
- ArrayDeque (stack/queue)push/pop/poll O(1)
Sorting & searching
Arrays.sort(a) / Collections.sort(l)
O(n log n)Arrays.binarySearch(sorted, key)
O(log n)list.sort(Comparator.comparingInt(X::n))