2014-01-27 7 views
0

배열에서 요소를 삭제하고 싶습니다. 1 - 9의 int 배열을 가지고 있습니다. 행의 숫자가 배열의 숫자와 일치하면 알고리즘이 행을 검색하고, 배열의 번호를 삭제합니다. 이 작업을 수행하는 가장 효율적인 알고리즘은 무엇입니까? 목록을 간단히 줄 일 수 있기 때문에 링크 된 목록을 생각하고 있었지만 나중에 혼란 스러울 수 있으며 배열만큼 효율적이지 않을 수 있습니다.배열에서 요소 삭제

+0

가장 효율적인 알고리즘이나 컨테이너를 요구하십니까? 그것들은 별개의 두 가지입니다. – chris

+3

그렇게하지 않는 한'std :: vector'를 사용하십시오. 대부분의 경우'std :: vector'의 성능은'std :: list'의 성능보다 낫습니다. – olevegard

+0

'int'의 배열에서 원소를 삭제할 수 없습니다. 크기가 고정되어 있으므로 항상 같은 수의 요소가 포함됩니다. – juanchopanza

답변

1

가장 효율적인 방법은 배열의 각 슬롯에 다른 컨테이너 컨테이너 빈/전체 플래그를 사용하는 것입니다. 그렇지 않으면 각 요소를 슬롯 위로 이동해야합니다.

0

좋은 대답을 줄 수있는 많은 변수를 여기에 제시하는 간단한 방법이 있습니다.

설명에서 두 개의 데이터 구조가 있으며 각 데이터 구조에는 값 목록이 있으며 두 번째 구조에있는 첫 번째 구조에서 모든 값을 삭제하려고합니다. 두 번째 구조는 어떤 종류의 구조입니까? 당신이 그것을 제어 할 수 있습니까? 그것은 쉽고 빠르게 set 또는 unordered_set처럼 검색 될 수있는 무언가입니까? 아니면 연결된 목록과 같은 값을 찾기 위해 반복되어야하는 무언가입니까? 삭제하려는 데이터 구조가 오름차순으로 유지되어야합니까?

이상적으로이 컨테이너 중 하나는 처음부터 끝까지 반복되어야하고 다른 컨테이너는 빠르게 검색 할 수있는 것이 될 것입니다. 삭제하려는 컨테이너에서 빠른 삭제 시간이 필요합니다. 배열을 순서대로 유지해야하는 경우 배열에서 삭제하는 작업은 시간이 오래 걸릴 수 있습니다. A : 삭제할 지점의 모든 요소를 ​​뒤로 이동 한 다음 배열의 실제 길이를 추적하거나 B : 배열의 내용을 해당 요소가없는 새 배열에 추가합니다. 실제로 알고리즘이나 컨테이너가 당신의 작업에 가장 적합한 지에 대한 좋은 대답을주기에 충분한 정보가 없습니다.