Java에서 BinarySearch & ArrayLists를 사용하면 O (nlogn)에서 O (n2)까지 InsertionSOrt의 복잡성을 줄일 수 있는지 궁금합니다.InsertionSort의 복잡성을 O (nlogn)까지 줄일 수 있습니까?
1
A
답변
2
삽입 정렬에에 O (N2) 복잡도 기여 2 가지있다 : 요소를 교체하기에 적합한 위치 검색
1) - 반복 당 O (N)이다. 이진 검색을 사용하여 O (log n)로 줄일 수 있습니다.
2) 올바른 위치가 발견되면 요소를 오른쪽보다 큰 (또는보다 작게) 이동합니다. 최악의 경우 목록 앞에 요소를 삽입하면 정렬 된 목록의 나머지 요소를 모두 오른쪽으로 이동해야합니다. 최악의 경우는 반복 당 O (n)입니다. 것 이진 검색 &의 ArrayList를 사용
따라서 총 복잡성 :
O(n * n + n * log n)
0
일종의 삽입에 대한 복잡성 : 정렬 할 수있는 모든 나머지 요소를 통해
- 으로 반복. (n 개의 원소에 대해 O (n))
a. 다음 요소 (위치 k에서 말)가 pos k-1에있는 요소보다 큰 경우 아무 것도하지 않습니다 (확인은 O (1)입니다). 즉, O (n * 1)은 이미 모든 요소가 정렬 된 최상의 경우입니다.
b. pos k의 요소가 k-1의 요소보다 작 으면 왼쪽 요소만큼 커질 때까지 요소를 왼쪽으로 이동 시키거나 비교할 요소가 남아 있지 않습니다. . 따라서 O (n * n)
관련 문제
- 1. 어떻게 복잡성을 줄일 수 있습니까?
- 2. 이 코드의 복잡성을 더 줄일 수 있습니까?
- 3. 복구 암호에 대한 암호의 복잡성을 줄일 asp.net
- 4. unordered_set :: find의 복잡성을 예측할 수 있습니까?
- 5. 누군가이 코드를 줄일 수 있습니까?
- 6. 어떻게하면 JBOSS를 줄일 수 있습니까?
- 7. 큰 (O) 표기법 : 누구든지 확인할 수 있습니까?
- 8. 쿼리를위한 O (log n) 복잡성을 가진 데이터 구조
- 9. 이 코드의 시간과 공간의 복잡성을 어떻게 알 수 있습니까?
- 10. 가장 큰 복잡성을 결정할 수 없다
- 11. 이러한 루프의 점근 적 시간 복잡성을 어떻게 알 수 있습니까?
- 12. 이 매트릭스를 파워 n으로 찾기 위해 시간 복잡성을 줄일 수있는 방법이 있습니까?
- 13. 스윙 JButton의 여백을 줄일 수 있습니까?
- 14. Xna에서 텍스처의 크기를 어떻게 줄일 수 있습니까?
- 15. 효율적인 방법으로 MapReduce 결과를 줄일 수 있습니까?
- 16. 어떻게 텍스트 상자 너비를 줄일 수 있습니까?
- 17. 어떻게 linq 코드를 줄일 수 있습니까?
- 18. Android : onTouch의 대기 시간을 줄일 수 있습니까?
- 19. Hadoop지도를 디버그하여 어떻게 줄일 수 있습니까?
- 20. 어떻게 게시물 크기를 줄일 수 있습니까?
- 21. 우리는 어떻게 페이지 폴트를 줄일 수 있습니까?
- 22. cudaDeviceSynchronize가 memcopy 시간을 줄일 수 있습니까?
- 23. 어떻게 계속해서 as3에서 숫자를 줄일 수 있습니까
- 24. 줄을 어떻게 늘리거나 줄일 수 있습니까?
- 25. Chrome 탭의 메모리 용량을 줄일 수 있습니까?
- 26. Regex -이 표현식을 줄일 수 있습니까?
- 27. pdf를 만드는 동안로드 시간을 줄일 수 있습니까?
- 28. 어떻게 이미지 밝기를 줄일 수 있습니까?
- 29. 이 방정식을 줄일 수 있습니까? 여기
- 30. .LESS 변수를 사용하여이 구문을 줄일 수 있습니까?
어떻게 이진 검색이 삽입 정렬을 개선한다고 생각하십니까? 그리고'ArrayList'는 어떻게 도움이 될까요? – awksp
'InsertionSort'와'BinarySearch'라고하는 표준 Java 클래스가 있습니까? –
No. 최상의 경우는 O (n)의 복잡성을가집니다. 그리고이 경우는 이미 정렬 된 배열을위한 것입니다. 이진 검색은 도움이되지 않습니다. – TheLostMind