두 배열이 있습니다. Array1은 의학 용어를 보유하고 있으며 array2는 일반 영어 용어를 사용하고 있습니다. 의학 용어 배열에는 일부 비 의학 영어 단어가 포함되어 있습니다 (array1에 복제 됨). 이것들은 array1이 20,000이고 array2가 15000을 넘습니다. 두 배열을 비교하고 delphi를 사용하여 array1에서 중복 단어를 제거하는 가장 빠른 방법은 무엇입니까? 당신의 배열을 정렬하는 경우, 두 pointers-- p1
및 p2
array1
및 array2
resply을 유지델파이에서 두 배열을 비교하고 하나에서 중복을 제거하는 방법
0
A
답변
2
배열이 정렬되지 않은 경우이 방법이 더 빠릅니다. 1. array2의 모든 단어를 사전에 넣습니다. 2. array1을 실행하고 사전에서 각 단어를 찾아서 찾으면 제거하십시오.
1 단계와 2 단계 모두 O (n) 시간이 소요됩니다.
이전 버전의 델파이를 사용하는 경우 델파이 설치의 MemIni.Pas 파일에있는 THashedStringList와 같은 사전 클래스를 사용해야합니다. 그것은 매우 큰 N을 위해 타락하지만 20.000 엔트리와 같이 매우 빠릅니다.
O (1)에서 1 억 개의 문자열을 저장하고 찾을 수있는 매우 빠른 구현은 here입니다. 이 기사는 독일어이지만 코드는 영어로 이해할 수 있습니다.
2
. 을 초기화하여 array1
및 array2
의 첫 번째 요소를 가리 키도록합니다.
첫 번째부터 시작하여 array1
의 각 항목에 대해 단어가 array2 [p2]인지 확인하십시오. 해당하는 경우 array1
에서 제거하십시오. 그렇지 않은 경우, 증가 p2
당신이 히트를 발견하는 경우 array1[p1]
을 제거
((array1[p1] >= array2[p2]) and (array1[p1] < array2[p2+1])),
까지.
시간은 O(n)
입니다. O(nlogn)
시간에 정렬 알고리즘이 있습니다.
관련 문제
- 1. 2 다차원 배열을 결합하고 중복을 제거하는 방법
- 2. 두 컬렉션을 비교하고 하나에서 추가/제거하여 일치하도록
- 3. 정규식에서 중복을 제거하는 방법
- 4. PHP : 두 배열을 비교하고 우선 순위별로 정렬
- 5. PHP - 두 개의 배열을 비교하고 배열의 하나가
- 6. 인터페이스 간의 중복을 제거하는 방법
- 7. 술어 개체에서 중복을 제거하는 방법?
- 8. int [] []에서 중복을 제거하는 방법
- 9. 내부 조인에서 중복을 제거하는 방법?
- 10. 두 바이트 배열을 비교하고 Java에서 백분율을 얻으시겠습니까?
- 11. 두 배열을 비교하고 공통점이 있는지 확인하십시오 (PHP)
- 12. PHP에서 두 배열을 비교하고 밖으로 결과를
- 13. ActionScript - 복잡한 배열의 중복을 비교하고 제거 하시겠습니까?
- 14. SetWithArray를 사용할 때 NSSet이 배열의 값을 비교하여 중복을 제거하는 방법
- 15. 중복을 제거하는 방법은 무엇입니까?
- 16. 정렬하지 않고 배열에서 중복을 제거하는 방법
- 17. 키만을 기반으로 해시 배열에서 중복을 제거하는 방법?
- 18. 중복을 찾아 제거하는 가장 쉬운 방법은 무엇입니까?
- 19. 델파이에서 바이트 배열을 정수로 변환
- 20. 중복을 제거하는 동안 Access에서 두 테이블을 병합하는 방법은 무엇입니까?
- 21. 두 배열을 비교하고 같은 객체를 새 배열에 넣습니다.
- 22. Ruby : 일치하는 두 배열을 비교하고 DESC 순서로 결과를 정렬하십시오.
- 23. 두 배열을 비교하고 각 배열에 따라 차이점을 표시
- 24. 중복을 피하는 방법 두 테이블 합치기
- 25. 두 배열을 반복하는 방법
- 26. AWK를 사용하여 이러한 중복을 제거하는 방법은 무엇입니까?
- 27. 두 datetimes를 비교하고 일 차이를 얻을
- 28. 델파이에서 배열을 포인터로 그리고 캐스팅하는 방법은 무엇입니까?
- 29. 제대로 NHibernate에서 중복을 제거하는 데 도움이 필요
- 30. 두 개의 RichTextBox를 비교하고 있습니까?