프로파일 링 정렬 알고리즘에 사용하려면 ArrayList<Integer>
에 1 백만
dollars
정수가 필요합니다. 정수의 범위는 중요하지 않습니다. [0, MAX_VALUE
], [MIN_VALUE
,, MAX_VALUE
] 등은 모두 괜찮 으면서도 광범위하게 배포되기를 원합니다.목록을 섞거나 임의로 생성하는 것이 더 빠릅니까?
나는 통지가이 코드를 사용할 때 : 병합 정렬은 2 밀리 초를 소요하면서
이for (int i=0; i<1_000_000; i++) {
list.add(i);
}
Collections.shuffle(list);
mergeSorter.sort(list);
shuffle
호출, 실행하는 데 약 10 초가 걸립니다.
따라서 내 질문 : shuffle
을 사용하는 것보다이 숫자를 무작위로 생성하는 것이 더 빠르지 만 (이유는 무엇입니까?)
는 (나는이 자신하지만 내 홈 하드웨어가이 문제를 테스트하기에 충분하지 않습니다 프로파일 것이다. 또한, 나는 이론/개념 설명을하고 싶습니다.)
* 이유 *를 설명하고 복잡성 제한을 알아 줘서 고마워. – wchargin