메뉴 건너뛰기

SAP 한국 커뮤니티

[요청]Binary Search의 원리에 대한 질문

수욕정이풍부지 2009.02.12 20:16 조회 수 : 3916

안녕하세요?


ABAP 4년차인데요..


늘상 사용하는 Binary Search이지만 ABAP에서의 근본적인 원리가 갑자기 궁금해져서 질문을 드립니다.


전산학과 출신이라서 기본적인 알고리즘은 알고 있습니다.


Search하고자 하는 필드의 순서대로 Sort를 한 후에


이진 트리를 이용하여 중간값과 찾고자하는 값을 비교하여 검색하기 때문에


대상건수가 많을수록 속도는 일반 Search에 비해서 기하급수적으로 빨라지겠죠..


예를 들어 1000 건을 대상으로 Search를 하게 되면


일반 Search는 1000/2  = n 이므로 평균 500번의 탐색속도를 가지게 될거고


Binary Search는 2ⁿ = 1000이므로 최대 10번 정도의 탐색속도를 가지게 되는 걸로 알고 있습니다.


 


그런데 프로그래밍을 하면서 일반 Search든 Binary Search든 중복되는 값이 있을때는


가장 첫번째 값을 찾아온다는 것은 이미 수많은 경험을 통해서 익히 알고 있습니다.


궁금한 것은 일반 Search는 순차적으로 Read하므로 위 결과가 당연하다고 생각되지만,


Binary Search는 중간값을 비교하는데 왜 항상 첫번째 값을 읽어오느냐 하는 것입니다.


 


아래와 같은 Internal Table이 있다고 가정하고 질문을 드리면


 


Index   A    B


--------------


  1       1    a  


  2       2    b


  3       3    c


  4       3    d


  5       4    e


  6       5    f


  7       6    g


 


위에서 Internal table은 A라는 필드로 이미 Sort가 되어 있는 상태입니다.


 


여기서 READ TABLE itab WITH KEY A = '3' BINARY SEARCH 라는 명령을 하게 되면


세번째 Index를 읽게 되고 B값은 'c'가 될 겁니다.


하지만 알고리즘 접근을 하게 되면 총 7건의 Record이므로 중간값인 4번째 index를


읽어서 B값은 'd'가 되어야 맞는게 아닌가 하는 의문이 문득 들었던 적이 있었거든요..


 


ABAP에서 Bianry Search를  할 때 알고리즘을 어떻게 적용해서 사용하는건지 알고 싶네요.


물론 실질적인 프로그래밍을 함에 있어서는 쓸데없는 질문이 될수도 있겠지만  궁금한 건 못참는 성격이라서.. ^^


다시 한 번 말씀드리지만 Search 결과를 물어보고자 하는게 아니라


중복값의 Search가 정확히 어떤 방식으로 이루어지는지 혹시 알고 계시면 답변 주시면 감사하겠습니다. 


다들 수고하세요~


 

번호 제목 글쓴이 날짜 조회 수
3227 [요청]LEAVE TO LIST-PROCESSING. 관련 된거요 [2] 아바퍼 2009.02.18 8211
3226 <b>[완료]</b>생초보 질문 죄송합니다. 다들 조금은 하시는 질문들인데.. 전 ㅜㅜ;; [10] 생짜초보 2009.02.18 1218
3225 [요청]스플릿을 했는데 바가 안움직입니다. 왜 안되는지 모르겠네요 처서련 2009.02.17 1298
3224 [요청]간단한 변수 사용법에 관한 질문입니다. 도와주십시요 [2] 아바퍼 2009.02.17 1045
3223 [요청]펑션에 대해 질문 드리겠습니다. [1] Giant 2009.02.10 1028
3222 <b>[완료]</b>다이내믹 도큐먼트 관련 문의사항입니다 [1] 처서련 2009.02.17 1144
3221 [요청]long text 컬럼이 포함된 엑셀파일 업로드가 가능합니까? 노력&성장 2009.02.17 1668
3220 <b>[완료]</b>[re] long text 컬럼이 포함된 엑셀파일 업로드가 가능합니까? storyroom.net™ 2009.02.17 1286
3219 [요청]스마트폼 FORMATTING_ERROR 질문있습니다. dndb 2009.02.17 1827
3218 [요청]백그라운드 JOB에서 BDC 수행 질문입니다. file 아스라다 2009.02.16 1166
3217 <b>[완료]</b>파시블 엔트리에서 질문있습니다. [2] file 카츠 2009.02.16 1372
3216 <b>[완료]</b>클래스 어렵네요 ㅡㅡ 질문드립니다 도와주세요 [5] 아이쿠! 2009.02.16 1493
3215 <b>[완료]</b>LDB프로그램에 수정을 하려면 어떻게 하나요? [1] 하오 2009.02.16 1558
3214 [요청]Write 에서 입력 수정 가능하게 어떻게 하시는지요? [2] Zking 2009.02.16 1162
3213 [요청]구매요청 스탠다드에서 첨부파일 assign하는데 그 어사인된 파일 전송 ? [1] 풍운사랑 2009.02.16 1898
3212 [요청]SAP 에서 MS-SQL 접속... dbmssslib.dll [2] 도련님 2009.02.16 1472
3211 <b>[완료]</b>SELECT-OPTIONS에서 Start date와 End date의 날짜와 시간이 따라 적용되는 문제의 해결방법 [11] 째마니 2009.02.16 2291
3210 <b>[완료]</b>CHAR로 정의된 필드값에서 조건을 원하는 자리수 만 가져오는 방법 있을까요? [3] 박하사탕 2009.02.16 1341
3209 [요청]abap 프로그램 짠 소스코드를 export 할수 있나요? [4] mhkang 2009.02.14 2059
3208 [요청]덤프문제에 관해 질문을 드립니다. file 로미오 2009.02.13 1320