I am working on this question. 내 함수 프로토 타입은 내가 leftPos + (rightPos-leftPos)/2 (rightPos-leftPos)/2 rightPos에이 순서로 정렬됩니다에 leftPos을 알고있는 함수의 두번째 부분에서배열이 두 개일 때 정렬이 어떻게됩니까?
static void Sort(byte[] arr, int leftPos, int rightPos)
입니다.
나는 두 부분이 순서대로되어 있음을 알기에 내가 어떻게 할 수 있는지 생각해 보았다. 나는 어떤 것도 생각할 수 없었다. merge sort에서 병합 함수를 살펴 봤지만 대신 출력 배열을 사용합니다.
두 조각이 모두 순서대로 정렬되어 있는지 어떻게 알 수 있습니까?
참고 : 기본 배열과 동일한 길이의 여분의 배열을 임시 메모리로 사용할 수 있지만 각 병합 후에 Array.Copy를 수행해야한다고 생각했습니다.
하위 및 상위 btw는 무엇입니까? rotate ... .... 이것을보고있는 동안, 방금 두 번째 배열을 사용하고 array.copy를 사용하면 더 좋습니다. 이보다 훨씬 적은 줄이있을 것이고, + 함수는 빠져있다. (나는 모두 아래쪽, 위쪽, 회전한다.) –
@acid 나는 [source] (http://thomas.baudel.name/Visualisation/VisuTri/inplacestablesort.html)를 인용했다. 이러한 기능을 정의합니다. 나는 동의한다 - 물건을 제자리에 유지하기 위해 오버 헤드를 추가 할 때 그만한 가치가있는 일은 없을 것이다. 나는 단지 필요한 경우 할 수 있다는 것을 보여 주려고했다. – marcog