[이것은 인터뷰 질문입니다. 중복을 찾을 수 없습니다.]2 개의 정렬 된 하위 배열이있는 배열을 내부 정렬
배열에는 두 개의 하위 정렬 된 배열이 있습니다. 2 개의 하위 배열을 정렬하는 inplace 알고리즘을 제공하십시오. 전 용
: I가/P : 1 4 5 7 8 9 1 2 3 6 10 11 O/P : I가있는 장소의 관점에서 생각 1 2 3 4 5 6 7 8 9 10 11
병합 정렬, 삽입 정렬 (하위 배열은 이미 정렬되어 있기 때문에) 및 빠른 정렬이라는 측면에서 볼 때 표준 정렬 방법을 사용할 때보 다 더 복잡 해지는 솔루션을 생각할 수 없습니다.
정렬 된 하위 배열 속성을 활용하고 입력시 Quicksort를 실행하는 것보다 시간이 더 복잡 해지는 알고리즘을 찾으십시오.
이
이 예제를 사용하여, 내가 생각 병합 정렬 시뮬레이션 :1) For position 0, Comparing 1 & 2, 1 is smaller let it stay at it's original place
2) For position 1, Comparing 2 & 4, 2 is smaller so swap 2 and 4
3) For position 2, Comparison now is between 4 and 3 (5 > 4 anyways) swap 3 and 5
4) For position 3, Comparison between 4 & 5, swap 4 and 7
5) For position 4, Comparison between 7 & 5, swap 8 and 5
6) For position 5, Comparison between 7 & 8 (OUCH!!) it should have been between 7 & 6
이 문제가 자리에서 병합가 너무 복잡 매트릭스의 정렬 된 행을 정렬과 비슷한 것 같다.
병합 정렬을 다시 고려하십시오. – phs
[가능한 O (n) 시간 및 O (1) 공간 비용을 사용하여 두 개의 정렬 된 정수 배열을 병합하는 방법 (http://stackoverflow.com/questions/2126219/how-to-merge-two-sorted -integer-array-in-on-on-time-and-o1-space-co 사용 –