다음과 같은 OrderElements
기능을 어떻게 구현합니까?O (1) 보조 공간을 사용하여 배열을 지정된 순서로 바꾸는 방법은 무엇입니까?
char chars[] = {'a', 'b', 'c', 'd', 'e'};
int want_order[] = {2, 4, 3, 0, 1};
int length = 5;
OrderElements(chars, want_order, length);
// chars now contains: c, e, d, a, b
그것은 당신이 선형 여분의 공간을 사용할 수있을 때 쉽지만, 그것은 즉, 직접의-장소 chars
요소를 정렬 만 일정 여분의 공간으로 할 수 있는가?
피. 에스. : 이것은 시험 문제는 아니었다. 사실이 기능이 필요합니다.
정리 : 원하는 최종 요소 순서에 대한 오해가있는 것 같습니다. 예에서 얻어진 배열은 원래 chars
배열을 참조하여, 다음의 요소를 가져야한다 :
{chars[2], chars[4], chars[3], chars[0], chars[1]}
엄밀히 말하면
{'c', 'e', 'd', 'a', 'b'}.
셔플은 무게 또는 미리 정의 된 사양으로 수행됩니까? –
@astander : 질문을 이해할 수 없습니다. want_order는 우리가 원하는 순서를 지정합니다 ... – Frank
보조 메모리가 무엇을 의미하는지 자세히 설명해야한다고 생각합니다. 인덱스가 O (1) – Mike