Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[975] Re:[Q] 작은 쪽에서 가장 가까운 수를 찾아주는 STL 함수.
..^^ [] 1570 읽음    2002-08-11 02:53
소트되어 있는 상태의 배열이라면...
배열의 중간부터 검색해나가면 O(logN)으로 검색할수있습니다...
intArr[100]의 경우 배열의 중간인 intArr[50]의 값을 Val과 비교해서 크면 intArr[25]의 수와 작으면 intArr[75]의 수와 비교합니다...이런식으로 계속 중간의 수만 비교하면 될것같은데여..
아래 간단하게 같은수의 첨자찾는 방법을 적어봤는데여...실행은 안해봤는데 이런식으로 하면 될것같네여..
결과야 장담못하지만여...^^
/***********************************/
#define ARRCNT   100
.
.
.
.
int IntArr[ARRCNT];
for(int i=0; i<ARRCNT; i++) IntArr[i] = 2*i;
int Val = 55;
int cnt,Index;
Index=cnt=ARRCNT/2;
while(1)
{
cnt/=2;
if(Val>IntArr[Index]) Index-=cnt;
else if(Val<IntArr[Index]) Index+=cnt;
else break;
}
/***********************************/



Jisang Yoo 님이 쓰신 글 :
: int IntArr[100];
: for(int i=0 ; i<100 ; i++)
:   IntArr[i] = 2*i;
: int Val = 55;
:
: 위에서처럼 int의 배열인 IntArr가 있고, 배열 IntVarr 은 크기가 작은 수부터 큰 수의 순서로 소트되어있는 상태라고 합시다.
: 그리고 또다른 int 변수인 Val 이 있는데, 하고 싶은 것은,
: IntArr 배열 안에 있는 수들 중에서 Val 보다 작은 수들 중 가장 큰 수의 인덱스를 찾는 것입니다.
: 즉, IntArr 안에 있는 수들 중에서 Val보다 작은 것들 중 Val 과 가장 가까운 수를 찾는 것인데,
: 이런 일을 하는 STL 함수가 있나요?
: 이런 일을 할 때, IntArr[0] ,IntArr[1], .... 이런 식으로 순서대로 차례차례로 비교하면 O( N) 의 시간이 걸리는데,
: IntArr가 이미 소트된 상태라는 것을 이용해서 O(logN) 의 시간이 걸리는 방법으로 이 일을 해주는 STL함수가 무엇인가요?

+ -

관련 글 리스트
972 [Q] 작은 쪽에서 가장 가까운 수를 찾아주는 STL 함수. Jisang Yoo 1683 2002/08/10
980     lower_bound 또는 equal_range를 쓰면 됩니다. 김백일 2805 2002/08/11
975     Re:[Q] 작은 쪽에서 가장 가까운 수를 찾아주는 STL 함수. ..^^ 1570 2002/08/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.