2017-04-11 1 views
-1

없이 할 질문은 다음과 같습니다첫 번째 요소가 가장 크고 두 번째 요소가 가장 작은 식으로 배열을 정렬합니다. 여분의 공간

는 첫 번째 요소가 가장 큰 것으로 일종의 그것을 같은 방식으로, 정렬되지 않은 배열을 감안할 때, 두 번째 요소는 가장 작은, 세 번째 요소는 두 번째로 큰,

추가 작업 : 추가 공간을 사용하지 않고도 작업을 수행 할 수 있습니까?

예 :

[2, 4, 3, 5, 1] ​​-> [5, 1, 4, 2, 3] I는없는 배열을 정렬 할 수 있도록하려는

여분의 공간을 사용합니다. 가장 효율적인 솔루션은 무엇입니까? 나는 배열을 통해 반복되는 O (n) 솔루션 만 생각해 볼 수 있습니다. 그 다음 큰 요소와 그 다음으로 작은 요소를 찾습니다. 보다 효율적인 솔루션이 있습니까?

관련 질문 Sorting an array with alternate smallest and largest valuesSorting an array with alternate smallest-largest values을 살펴 보았지만 답변이 제 질문에 도움이되지 않았습니다.

+0

왜 링크 된 질문에 대한 답변은하지에 도움이 마십시오 문제? 마지막으로 정렬 된 배열을 재정렬하기 위해 O (n) 인 작업 코드를 제공합니다. Sorting은 일반적으로 O (n log n)을 필요로합니다. 숫자가 고유하고 연속적이라는 것을 알고 있지만 O (n)에서도 정렬을 수행 할 수 있습니다. –

+0

@JimMischel 마지막 질문에서 코드의 논리를 이해하지 못해 새로운 질문을했습니다. – user7634144

답변

0

전제 조건 : deque.

1. 배열을 배열한다.

루프)

2.pop_back (배열) - 전 2 위치에서 *> 그 요소를 삽입한다.

예) 1, 2, 3, 4, 5, 6,

a) 7 7 (0 삽입) -> 1 2 3 4 5 6 => 7 1 2 3 4 5 6

b) 6 (삽입 2) -> 7 1 2 3 4 5 => 7 1 6 2 3 4 5

c) 5 (삽입 4) -> 7 1 6 2 3 4 => 7 (완료) 1 6 2 5 3 4

복잡 어쩌면 O (nlog (N)) + O (N/2)

+0

이러한 인서트는 비쌉니다. 7에서 0을 삽입하려면 항목 1-6을 약간 아래로 이동해야합니다. 각각의 삽입은 O (n) 또는 그 일부분이다. 나는 당신의 알고리즘이 O (n log n) + O (((n/2)^2)/2)라고 생각할 것이다. 이것은 아마도 O (n^2)로 간주 될 것이다. –

관련 문제