다양한 크기의 목록이 여러 개 있습니다. 목록의 각 색인에는 키와 객체가 모두 들어 있습니다. list1.add ('Key', obj).중첩 루프 복잡성
목록이 모두 정렬됩니다.
내 목표는 목록을 반복하고 목록 2,3,4 또는 n의 1 개 이상의 항목을 키를 사용하여 mainList의 항목과 일치시키는 것입니다. ! 경우 현재 = 이전 검사를 사용하여 신속하게 종료 부울 값을 사용하여 난을 통해 내가 루프로
for i to list1 size
for j to list2 size
if list1[i] = list2[j]
do stuff
난에서 개체를 삭제하고 있습니다 :
은 현재 내가의 라인을 따라 뭔가를 할 내가 가져가는 목록.
잘 작동하지만 지금은 일치해야하는 다른 목록과 나중에 다른 n 목록을 가질 수 있습니다. 목록의 크기가 다릅니다.
내가 볼 수있는 2 가지 옵션 중 하나는 내부 목록이 변경된 코드의 여러 부분을 반복하는 것입니다.이 방법과는 다릅니다.
다른 옵션은 위의 내용을 확장 한 내부 루프가 완료되면,에 이동하는 것입니다 다음 :
for i to list1 size
for j to list2 size
if list1[i] = list2[j]
do stuff
for k to list2 size
if list1[i] = list2[k]
do stuff
나는 2가 더 효율적이라고 생각하는 나는 올바른라고 생각하고 싶습니다
그러나 나는 확신 할 수 없다. 더 좋은 방법이 있습니까?
어떤 조언이나 도움을 주셔서 감사합니다.
둘 다 동일한 시간 복잡성을 갖습니다. 첫 번째 옵션은'O (i * j) + O (i * k)'이고, 두 번째 옵션은'O (i * (j + k))'입니다. – Barmar
@Barmar : 고맙습니다. 복잡성은 n^2입니까? 나는 어떤면에서 보았을 때 개선 될 것이라고 생각했지만 복잡성 분석이 내 장점이 아니었다 고 생각했다. – null
이 질문은 cs.stackexchange.com이 이. – Barmar