의 주문이 알고리즘은 목록 1이 두 목록
목록 1 일치 O (N^2) 재 주문 목록 2에 대한보다 거기에 비교 BDCA
참고 : 목록 2는 목록 1과 비교하여 더 많거나 적거나 완전히 다른 항목을 가질 수 있습니다.
의 주문이 알고리즘은 목록 1이 두 목록
목록 1 일치 O (N^2) 재 주문 목록 2에 대한보다 거기에 비교 BDCA
참고 : 목록 2는 목록 1과 비교하여 더 많거나 적거나 완전히 다른 항목을 가질 수 있습니다.
목록의 항목 유형에 대해 전체 주문을 만들 수있는 경우 목록 1의 색인을 만들 수 있습니다. 항목을 정렬합니다. 그런 다음이 색인을 사용하여 목록 2의 순서를 바꿀 수 있습니다.이 알고리즘은 시간상 O (n log n)이며 공간에 여분의 O (n)이 필요합니다.
O (n Log (n))가되는 한 가지 가능성은 다음과 같습니다. 이를 위해서는 목록 값을 배열/벡터/정렬 가능한 구조 유형으로 읽어야합니다.
편집 후에는 두 번째 목록에 첫 번째 목록과 상관 관계가 없음을 언급합니다. 따라서 비교 함수는이를 고려해야합니다. 비교되는 값 중 하나 또는 둘 모두가 첫 번째 목록에없는 경우 compare 함수는 값의 순서를 결정해야합니다 (예 : 끝에 또는 처음으로 이동합니까?).
당신은 Diff Algorithm을 찾고 있습니다!
두 목록의 내용에 특별한 점은 알고 있습니까? 목록 1과 2의 요소가 동일하면 목록 1을 목록 2에 복사 할 수있는 것처럼 보입니다. 목록 2에 목록 1에없는 항목이있는 경우 어떻게해야합니까? 그게 어디로 분류 되나요? –
는 명확히 할 수 있습니까? 재주문이란 무엇입니까? 목록 2에서 목록 1로 순열을 찾는 것입니까? – lijie
수정 사항이 덜 명확 해졌습니다! 어떻게 다른 요소가 다를 수 있습니다 하나는 다른 목록 B에 목록을 재정렬합니까?! – lijie