최악의 경우 Quicksort가 얼마나 많은 이진 배열을 크기 n
으로 정렬해야하는지 알고 싶습니다.
이 문제의 최악의 사례를 찾을 수 없습니다. [0 1 0 1 0 1..]
?
건배,
EO이진 배열 빠른 할당
답변
아니 정확히 퀵,하지만 당신은 당신이 O (N)에서 할 수있는 바이너리 배열을 정렬하려는 경우. 얼마나 많은 1과 0을 당신이 원하는 순서대로 쓰는지 계산하십시오. 다음 배열에 대한 예를 들어
:
[0 1 0 1 0 1 1]
당신은 O에서 (n)이, 믿을 수있는 세 개의 0과 사 1의 있습니다. 그런 다음 배열을 먼저 3 개의 0과 4 개의 1로 다시 작성합니다.
하지만이 경우 배열을 두 번 반복하여 계산하고 쓰기 위해 하나는 –
맞지만 알고리즘은 O (n)입니다. –
두 번째 패스는 키 비교를 수행하지 않습니다. –
실제로 소수의 고유 키로 구성된 배열을 정렬하는 것이 일반적입니다. 고유 키 수가 O (1) 일 때 O (n) 시간에 적응하는 알고리즘을 원합니다. 귀하의 경우 두 가지 고유 키가 있습니다.
이것은 QuickSort 내가이 배열 [ 0 1 1 0 1 0 1 0 0 0 1 0 1 ]
에 퀵 알고리즘을 테스트 한 사건에 대한 최악의 경우에 O (nlogn) 평균 그러나 O (N^2)이며, 배열의 아이폰에이 13
요소이며, 알고리즘은 n^2
인 배열을 정렬하기 위해 170
반복을 사용합니다.
let n0 <- 0;
for i=0 to lenght(A)
if A[i] == 0
A[n0] = 0;
++n0
for i=n0 to lenght(A)
A[i] = 1
- 1. 구조체의 MATLAB 배열 : 빠른 할당
- 2. 빠른 배열 채우기
- 3. 정적 배열 버퍼 할당
- 4. 빠른 검색은 선형 검색보다 빠른 이진 검색입니까?
- 5. 배열 포인터, 배열 할당
- 6. 배열 할당
- 7. 파이썬에서 빠른 이진 데이터 변환
- 8. PHP의 문자열/이진 배열
- 9. 이진 트리의 배열 구현
- 10. C에서 이진 배열 압축
- 11. 이진 검색은 배열 중복
- 12. MySQL에 이진 배열 저장
- 13. 빠른 JavaScript 배열 작업
- 14. 빠른 배열 비교 char?
- 15. Java 빠른 배열 오류
- 16. Postgres에 빠른 배열 삽입
- 17. 이진 트리에서 알파벳 순으로 알파벳 배열 배열
- 18. 할당 아직 배열 인덱스
- 19. 법률 배열 할당 문
- 20. 구조체 배열 할당
- 21. 자바 배열 할당 질문
- 22. 반환 배열 메서드 할당;
- 23. 정적 배열 할당 문제!
- 24. 할당 새 배열 키
- 25. numpy 배열 할당 문제
- 26. 할당 큰 (5000) 배열
- 27. 모델에 기능 배열 할당
- 28. 동적 할당 배열
- 29. 배열 할당 문제
- 30. 배열 재 할당 (C99)
최악의 경우 O (N2) 내용과 무관하지만 평균적으로는 O있을 것입니다 (N 로그 n) –
당신이 알고 있다면 배열은 0과 1로만 구성되어 있습니다. 그런 다음 quicksort를 사용하지 마십시오. 단일 파티션 패스만으로 충분할 것입니다. –
퀵소트를 사용하는 것이 가장 좋은 방법은 아니지만이 문제에 대한 최악의 복잡성을 알아야합니다. – eouti