최악의 경우 를 가정하여 정량화하는 방법입력이 array인 이중루프의 경우
| 입력 | 실행 시간 |
|---|---|
| array 원소 개수 = N | array 원소 개수 X array 원소 개수 만큼 비교 연산 = N X N |
| 시간 복잡도 O(N^2) |
시간 복잡도에 비해 중요하지 않다. 지나치게 공간을 낭비하는 것만 주의!
#include <iostream>
#include <vector>
#include <algorithm> // max_element 사용
using namespace std;
int largest_product(const vector<int>& arr) {
vector<int> products; // 배열은 벡터를 쓸겁니다!
for (int a : arr) {
for (int b : arr) {
// products 배열에 원소가 들어가는 이 연산은 (a * b)번이 실행되겠죠? 2중 루프!
products.push_back(a * b);
}
}
// products의 최대값을 찾는 함수
int maxVal = *max_element(products.begin(), products.end());
// 따라서, products의 공간 복잡도는 O(N^2)
return maxVal;
}
int main() {
vector<int> myList = {1, 3, 5, 7, 9};
cout << largest_product(myList) << "\n";
}
배열 대표 기능
용어
인덱스를 알고 있다는 전제 하에
- 데이터에 빈번하게 접근해야 할 때 -> 배열
- 데이터를 빈번하게 삽입/삭제해야 할 때 -> Linked List
기능
기능