2013-03-06 2 views
-5

에 추가되는 요소의 인덱스를 얻을 내가 필요로하는 기능 (구현이 단지 기본 개념) 새 요소 (발)를 저장할 인덱스를 반환C/C++ 정렬 된 배열

int add(int * array, , const int len, const int val); 

. 정렬 알고리즘은 선택 사항이지만 새 요소가 저장되는 위치가 필요합니다.

불행히도 STD를 사용할 수 없습니다. 요소에 중복이있을 수 있습니다.

편집 :

현재의 상황은 그때 내가 정렬 알고리즘 실행 마지막 자리에 새 요소를 추가한다는 것입니다. 정렬 중에 색인이 손실됩니다.

+0

그래서 b- 검색을 사용하여 속해있는 위치를 찾은 다음 필요한 경우 교대로 채우고 색인을 반환하십시오. 몇 가지 코드를 작성할 시간. – WhozCraig

+0

@WhozCraig 귀하의 의견에 첫 번째 문장의 문장을 재 설명해 주시겠습니까? – Rob

+0

명확성을 위해서. 당신은 * 삽입 된 * 색인을 원합니다, 맞습니까? 이 요소를 추가하고 있습니다. 맞습니까? * 이전에 반환 된 색인은 삽입 될 때마다 무효화 될 수 있습니다. 새로 삽입 된 항목 만 반환 값에 의해 유효하게 인덱싱됩니다. 너 괜찮 니? – WhozCraig

답변

1

배열이 이미 정렬 된 경우 삽입 정렬을 사용하십시오. 삽입 정렬은 덜 복잡한 방식으로 새 항목에 적합한 위치를 제공합니다.

기타 배열의 새 항목에 대해 이진 검색을 사용하여 배열에서 적절한 위치를 찾을 수 있습니다. 그 후 다른 모든 요소를 ​​이동하여 새 항목의 위치를 ​​만듭니다.