C에서 quicksort 구현을 구현했으며 성능을 저하시키는 데 필요한 입력을 파악하려고합니다. wikipedia 따르면"최악의 경우"quicksort를 시도하는 중
:
항상 이미 정렬 된 목록 또는 동일한 구성 요소의 목록에서 성능 저하 (N^2)이 방법은 결과에 피봇 같은 파티션 내의 마지막 요소를 선택.
그래서 시도해 보니 the following code이되었습니다. 피벗은 항상 마지막 요소이며 입력은 이미 정렬 된 목록입니다.
복잡성이 실제로 n^2라는 것을 증명하기 위해 각 반복에서 증가하는 전역 변수를 생성 한 다음 최종적으로 인쇄합니다.
가 나는 프로그램이 인쇄 것으로 예상 것 :
Done in 64 iterations
그러나, 28 번의 반복을했다. 어쩌면 "복잡성"이라는 용어에 대한 나의 이해가 잘못되었을 수 있습니까?
'n * (n-1)/2 = 8 * 7/2 = 28'이다. 'n * (n-1)/2'는 여전히 O (n^2)입니다. – nneonneo
@darwish 잘 생긴 아바타) –
더 큰 입력 (예 : 10^5 요소)을 취하면 O (n^2)임을 즉시 알 수 있습니다. –