한 알고리즘이 동일한 시간 복잡도로 다른 알고리즘보다 빠른 이유는 무엇입니까?

나단 루 자니

저는 코딩과 관련된 도전을하고있었습니다 : 경마 듀얼. 목표는 목록의 두 요소 간의 최소 차이를 찾는 것입니다.

나는이 첫 번째 알고리즘으로 시작했는데, 그것은 내가 생각 O(nlog(n))하지만 큰 배열에 대한 실행 시간이 초과되었습니다.

int array[N];
int min = numeric_limits<int>::max();

for (int i = 0; i < N; i++) {
  int value;
  cin >> value;
  cin.ignore();
  array[i] = value;

  for (int j = i - 1; j >= 0; --j) {
    int diff = abs(array[j] - value);
    if (diff < min) {
      min = diff;
    }
  }
}

그런 다음이 다른 알고리즘을 시도 O(nlog(n))했으며 이번에는 실행이 제 시간에 완료됩니다.

int array[N];
int min = numeric_limits<int>::max();

for (int i = 0; i < N; i++) {
  int value;
  cin >> value;
  cin.ignore();
  array[i] = value;
}

sort(array, array + N);

for (int i = 1; i < N; ++i) {
  int diff = abs(array[i - 1] - array[i]);
  if (diff < min) {
    min = diff;
  }
}

첫 번째 코드 복잡성에 문제가 있습니까? 내가 눈치 채지 못한 차이점이 있습니까?

당신의 도움을 주셔서 감사합니다.

Daniel Langr

첫 번째 코드 복잡성에 문제가 있습니까?

네, 틀 렸습니다.이 복잡성은 O (n log n) 이 아니라 O (n ^ 2) 입니다.

외부 루프는 n ( N) 번 실행되고 내부 루프는 평균 n / 2실행됩니다 . 따라서 복잡도는 곱셈 상수가 복잡도 계산에서 중요하지 않기 때문에 O (n * n / 2) 이며 O (n ^ 2) 입니다.

눈치 채지 못한 차이점이 있습니까?

네, 있습니다. O (n log n) 과 같이 매우 동일한 복잡성을 가진 두 개의 알고리즘이 있더라도 점근 적 복잡성 동작에서 무시되는 숨겨진 상수로 인해 둘 다 매우 다른 시간에 실행될 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

한 알고리즘의 시간 복잡성이 다른 알고리즘으로 이어 지나요?

분류에서Dev

한 알고리즘이 다른 알고리즘보다 빠른 이유 (연결 목록으로 숫자 추가)

분류에서Dev

이 더 간단하고 빠른 알고리즘이 작동한다면 왜 Dijkstra의 알고리즘이 필요합니까?

분류에서Dev

모든 단어 사다리를 얻기위한이 알고리즘의 시간 복잡도는 무엇입니까?

분류에서Dev

JS의 단순한 계승 알고리즘이 Python 또는 R보다 훨씬 빠른 이유는 무엇입니까?

분류에서Dev

한 시간 프레임을 다른 시간 프레임으로 줄이는 알고리즘

분류에서Dev

경로 압축 알고리즘을 사용한 가중 빠른 결합 : 시간 복잡도 분석

분류에서Dev

수학적으로, 다른 숫자 모듈로의 지수에 대한이 SICP 알고리즘이 작동하는 이유는 무엇입니까?

분류에서Dev

아래의 새로운 빠른 정렬 알고리즘에 대한 정확한 시간 복잡성 및 공간 복잡성을 찾는 방법

분류에서Dev

가장 가까운 이웃과 유사한 다음 알고리즘의 복잡성은 무엇입니까?

분류에서Dev

무한 (끝없는) 알고리즘을 올바른 알고리즘이라고 부를 수 있습니까?

분류에서Dev

동일한 열에서 다른 집계 알고리즘을 사용하는 SSRS 보고서를 만드는 방법은 무엇입니까?

분류에서Dev

목록이 맵보다 알고리즘 적으로 더 빠른 때는 언제입니까?

분류에서Dev

알고리즘에 대한 도움이 필요합니다

분류에서Dev

이 흥미로운 사건을위한 가장 빠른 알고리즘

분류에서Dev

다른 컴퓨터에서 동일한 알고리즘 실행 시간?

분류에서Dev

배열에 중복 값이있을 때 빠른 정렬 알고리즘 기간이 증가하는 이유는 무엇입니까?

분류에서Dev

모든 경로 합계를 찾기위한이 알고리즘의 시간 복잡성은 얼마입니까?

분류에서Dev

이러한 순열 및 조합 알고리즘의 시간 복잡도를 어떻게 계산합니까?

분류에서Dev

루프 내에서 한계가 변경되는이 알고리즘의 시간 복잡도는 무엇입니까?

분류에서Dev

공간 복잡성이 다른 여러 KMP 알고리즘 접근 방식이 있습니까? 차이점은 무엇입니까?

분류에서Dev

이 알고리즘의 시간 복잡도 (Big-O)는 무엇입니까?

분류에서Dev

수정 된 빠른 정렬 알고리즘의 시간 복잡성은 무엇입니까?

분류에서Dev

수정 된 빠른 정렬 알고리즘의 시간 복잡성은 무엇입니까?

분류에서Dev

Bubblesort와 유사한 알고리즘. 최악의 시간 복잡성은 무엇입니까?

분류에서Dev

소수 쌍이 다른 소수를 생성하는지 확인하기 위해 더 영리한 알고리즘을 찾는 방법은 무엇입니까?

분류에서Dev

8 포인트 알고리즘을 사용하여 한 이미지의 알려진 위치를 다른 이미지로 가져옵니다.

분류에서Dev

성능 : 동일한 알고리즘의 첫 번째 구현이 훨씬 더 빠른 이유

분류에서Dev

입력이 상수로 제한되는 경우 알고리즘의 복잡성은 무엇입니까?

Related 관련 기사

  1. 1

    한 알고리즘의 시간 복잡성이 다른 알고리즘으로 이어 지나요?

  2. 2

    한 알고리즘이 다른 알고리즘보다 빠른 이유 (연결 목록으로 숫자 추가)

  3. 3

    이 더 간단하고 빠른 알고리즘이 작동한다면 왜 Dijkstra의 알고리즘이 필요합니까?

  4. 4

    모든 단어 사다리를 얻기위한이 알고리즘의 시간 복잡도는 무엇입니까?

  5. 5

    JS의 단순한 계승 알고리즘이 Python 또는 R보다 훨씬 빠른 이유는 무엇입니까?

  6. 6

    한 시간 프레임을 다른 시간 프레임으로 줄이는 알고리즘

  7. 7

    경로 압축 알고리즘을 사용한 가중 빠른 결합 : 시간 복잡도 분석

  8. 8

    수학적으로, 다른 숫자 모듈로의 지수에 대한이 SICP 알고리즘이 작동하는 이유는 무엇입니까?

  9. 9

    아래의 새로운 빠른 정렬 알고리즘에 대한 정확한 시간 복잡성 및 공간 복잡성을 찾는 방법

  10. 10

    가장 가까운 이웃과 유사한 다음 알고리즘의 복잡성은 무엇입니까?

  11. 11

    무한 (끝없는) 알고리즘을 올바른 알고리즘이라고 부를 수 있습니까?

  12. 12

    동일한 열에서 다른 집계 알고리즘을 사용하는 SSRS 보고서를 만드는 방법은 무엇입니까?

  13. 13

    목록이 맵보다 알고리즘 적으로 더 빠른 때는 언제입니까?

  14. 14

    알고리즘에 대한 도움이 필요합니다

  15. 15

    이 흥미로운 사건을위한 가장 빠른 알고리즘

  16. 16

    다른 컴퓨터에서 동일한 알고리즘 실행 시간?

  17. 17

    배열에 중복 값이있을 때 빠른 정렬 알고리즘 기간이 증가하는 이유는 무엇입니까?

  18. 18

    모든 경로 합계를 찾기위한이 알고리즘의 시간 복잡성은 얼마입니까?

  19. 19

    이러한 순열 및 조합 알고리즘의 시간 복잡도를 어떻게 계산합니까?

  20. 20

    루프 내에서 한계가 변경되는이 알고리즘의 시간 복잡도는 무엇입니까?

  21. 21

    공간 복잡성이 다른 여러 KMP 알고리즘 접근 방식이 있습니까? 차이점은 무엇입니까?

  22. 22

    이 알고리즘의 시간 복잡도 (Big-O)는 무엇입니까?

  23. 23

    수정 된 빠른 정렬 알고리즘의 시간 복잡성은 무엇입니까?

  24. 24

    수정 된 빠른 정렬 알고리즘의 시간 복잡성은 무엇입니까?

  25. 25

    Bubblesort와 유사한 알고리즘. 최악의 시간 복잡성은 무엇입니까?

  26. 26

    소수 쌍이 다른 소수를 생성하는지 확인하기 위해 더 영리한 알고리즘을 찾는 방법은 무엇입니까?

  27. 27

    8 포인트 알고리즘을 사용하여 한 이미지의 알려진 위치를 다른 이미지로 가져옵니다.

  28. 28

    성능 : 동일한 알고리즘의 첫 번째 구현이 훨씬 더 빠른 이유

  29. 29

    입력이 상수로 제한되는 경우 알고리즘의 복잡성은 무엇입니까?

뜨겁다태그

보관