그래서 340, 6401 1280과 같은 30 개의 정수를 정렬하지 않은 배열을 사용합니다. 나는 int x를 가지고 있는데 이것은 사용자에 의해 만들어졌다. 배열의 어느 값이 해당 x 값에 가장 가까운 (더 낮은, 더 작은, 적은) 값인지를 찾아야합니다. 그런 일을하는 방법?부스트 : int 배열과 일부 특수 int 배열을 가지고 가장 가까운 것을 찾는 방법?
1
A
답변
1
사용자 지정 비교 연산자와 std::max_element()
을 사용할 수
struct limited_cmp {
int limit;
limited_cmp(int a_limit) : limit(a_limit) {
}
bool operator()(int left, int right) const {
if (left <= limit && limit < right) {
return false;
}
return (left < right);
}
};
int main() {
std::vector<int> numbers = ...;
std::cout << "nearest is "
<< *std::max_element(numbers.begin(), numbers.end(), limited_cmp(5))
<< std::endl;
}
2
배열이 정렬되지 않고 하나의 쿼리 만 수행하는 경우 가장 빠른 방법은 전체 배열을 스캔하는 것입니다. 배열의 크기보다 점근 적으로 더 많은 쿼리를 수행하는 경우 배열을 먼저 정렬 한 다음 각 쿼리에 대해 이진 검색을 수행해야합니다.
1
배열이 모두 정렬되지 않은 int 배열 인 경우 배열을 통과하는 O (n)보다 더 잘할 수 없습니다. 배열을 미리 정렬하는 데 드는 비용을 지불하려는 경우 이진 검색을 사용하여 O (logn)에서이를 수행 할 수 있습니다.
나는 당신을 위해 이것을 할 것이다 어떤 후원 안에 어떤 산법이 있다고 생각하지 않는다.
2
배열을 정렬하거나 std::set
을 사용하고 std::lower_bound
을 확인하십시오.
관련 문제
- 1. int 배열을 int 배열로 캐스트
- 2. int [] 배열을 List로 변환하는 방법?
- 3. int 배열과 float 시퀀스로 char 배열 스패닝
- 4. 최소값 int 배열을 구현
- 5. int 배열을 끝내는 nul
- 6. 2 int 배열을 비교
- 7. 변환 int int []
- 8. joda 새로운 날짜 시간 (INT, INT, INT, int, int, int)에 웹 로직 11g와
- 9. .NET에서 0에서 n까지의 int 배열을 얻는 방법
- 10. protobuf 메시지에 int 배열을 추가하는 방법
- 11. int 배열을 프래그먼트 셰이더에 전달
- 12. C#의 포인터가 int 배열을 만들까요?
- 13. int * pi = new int (0);의 int (0) 의미
- 14. android.media.AudioManager.setStreamVolume (int streamType, int index, int flags)
- 15. 되는 예외 (INT) 더블 (INT) INT
- 16. 가장 가까운 벡터를 찾는 알고리즘
- 17. int [] k, i 및 int k [], i;
- 18. 참조로 int/char 배열을 전달하는 오류/경고
- 19. 널 배열 int 배열
- 20. 구체에서 가장 가까운 점 쌍을 찾는 방법
- 21. as3 : Box2d 가장 가까운 시체를 찾는 방법
- 22. Mysql 중간 int 대 int 성능
- 23. g ++ __static_initialization_and_destruction_0 (INT, INT) -이
- 24. ArrayList에서 int [] 삭제 <int[]>
- 25. 안드로이드에서 Raster.getSample (int, int, int)에 해당하는 항목이 있습니까?
- 26. WCF 응답에 <int, int> 또는 int [] [] 반환
- 27. 튜플 <int, int> 대 int [2] 메모리 사용
- 28. realloc을 사용하여 int 배열을 확장하면 충돌이 발생합니다!
- 29. int (floatvar)와 (int) floatvar의 차이점은 무엇입니까?
- 30. SqlBulkCopy가 String.Empty를 INT NULL로 변환하는 것을 거부합니다.
는 왜 부스트에 대한 태그가? C 또는 C++에서 어떤 언어로 도움이 필요합니까? 지금까지 뭐라구? – SingleNegationElimination