O (1), O (n log n) 및 O (log n) 복잡성을 가진 우리가 매일 사용하는 알고리즘은 무엇입니까?
O (1), O (n log n) 및 O (log n) 복잡성을 가진 우리가 매일 사용하는 알고리즘은 무엇입니까?
답변:
질문에 주어진 시간 복잡성을 가진 알고리즘 / 문 그룹의 예를 원한다면 여기에 작은 목록이 있습니다.
O(1)
시각O(n)
시각요컨대, 모든 Brute Force 알고리즘 또는 선형성을 요구하는 Noob 알고리즘은 O (n) 시간 복잡성을 기반으로합니다.
O(log n)
시각O(n log n)
시각'log n'의 인수는 Divide와 Conquer를 고려하여 도입되었습니다. 이러한 알고리즘 중 일부는 가장 최적화 된 알고리즘이며 자주 사용됩니다.
O(n^2)
시각이러한 것들은 O (nlogn) 대응 물이있는 경우 덜 효율적인 알고리즘으로 간주됩니다. 일반적인 응용 프로그램은 여기에서 Brute Force 일 수 있습니다.
O(log n)
앞에 O(n)
놓으라고합니다. haha :)
O (1)-대부분의 요리 절차는 O (1)입니다. 즉, 요리 할 사람이 더 많아도 일정한 시간이 걸립니다 (냄비 / 팬의 공간이 부족할 수 있기 때문에 어느 정도 시간이 걸립니다). 요리를 나누어야합니다)
O (logn)-전화 번호부에서 무언가를 찾습니다. 이진 검색을 생각하십시오.
O (n)-책 읽기. 여기서 n은 페이지 수입니다. 책을 읽는 데 걸리는 최소 시간입니다.
O (nlogn)-병합 또는 빠른 정렬을 수행하여 카드를 정렬하지 않는 한 nlogn 인 매일 할 수있는 일을 즉시 생각할 수 없습니다!
소프트웨어 애플리케이션의 복잡성은 측정되지 않으며 big-O 표기법으로 작성되지 않습니다. 알고리즘 복잡성을 측정하고 동일한 도메인의 알고리즘을 비교하는 데만 유용합니다. 대부분의 경우 O (n)이라고하면 "O (n) 비교 "또는 "O (n) 산술 연산"이라는 의미입니다. 즉, 알고리즘 또는 응용 프로그램 쌍을 비교할 수 없습니다.
0 (logn)-바이너리 검색, 배열의 피크 요소 (하나 이상의 피크가있을 수 있음) 0 (1)-파이썬에서 목록 또는 문자열의 길이를 계산합니다. len () 함수는 0 (1) 시간이 걸립니다. 배열의 요소에 액세스하는 데는 0 (1) 시간이 걸립니다. 스택에서 푸시 작업은 0 (1) 시간이 걸립니다. 0 (nlogn)-병합 정렬. 파이썬에서 정렬하는 데는 nlogn 시간이 걸립니다. 따라서 listname.sort ()를 사용하면 nlogn 시간이 걸립니다.
참고-해시 테이블에서 검색하는 것은 충돌로 인해 일정한 시간보다 더 오래 걸리는 경우가 있습니다.
O ( 2N )
O (2 N )는 입력 데이터 세트에 추가 할 때마다 두 배로 증가하는 알고리즘을 나타냅니다. O (2 N ) 함수 의 성장 곡선 은 기하 급수적입니다. 매우 얕은 것에서 시작하여 급격히 상승합니다. O (2 N ) 함수 의 예는 피보나치 수의 재귀 계산입니다.
int Fibonacci (int number)
{
if (number <= 1) return number;
return Fibonacci(number - 2) + Fibonacci(number - 1);
}
Tower of Hanoi
더 좋은 예가되었을 것입니다.