C/C++ 예제

시삽: 레드플러스 님 
게시판 이동:
 제목 : 11.9. 이분(이진) 검색 알고리즘, 이진 탐색, 이진 검색
글번호: 266
작성자: 레드플러스
작성일: 2006/10/19 오전 2:18:51
조회수: 6346
/*
이분(이진;Binary) 탐색법, 이분 검색 : 데이터가 정렬되어 있을 때 유효함
*/
#include <stdio.h>

#define _CRT_SECURE_NO_WARNINGS

#define N 5 //데이터 수

void main(void)
{
    static int data[N] = { 21, 33, 35, 47, 59 }; // 정렬되어 있다고 가정
    int key = 0;    // 검색할 키(데이터) 저장
    int low = 0;    // 왼쪽 인덱스
    int high = 0;    // 오른쪽 인덱스
    int mid = 0;    // 가운데 인덱스 : N / 2
    int flag = 0;    // 참 또는 거짓
    int cnt = 0;    // 반복 횟수

    printf("탐색할 데이터 : "); scanf_s("%d", &key);

    low = 0; high = N - 1;
    while (low <= high)
    {
        printf("%d번 반복....\n", ++cnt);
        mid = (low + high) / 2;    // 가운데 인덱스
        if (data[mid] == key)
        {
            printf("%d는 %d 번째 인덱스에 있습니다.\n", data[mid], mid);
            flag = 1;
            break;
        }
        if (data[mid] < key)        // 오른쪽 영역 탐색
        {
            low = mid + 1;
        }
        else                        // 왼쪽 영역 탐색
        {
            high = mid - 1;
        }
    }
    if (flag != 1)
    {
        printf("찾을 수 없습니다.\n");
    }
}
 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 12. 메모리 관리 - 레드플러스 2005-07-26 5490
  11. C언어를 사용한 기초(현업) 알고리즘 - 레드플러스 2005-07-26 6236
  11.1. 예제. 합계(Sum), 카운트(Count), 평균(Avg) 알고리즘 : 합... - 레드플러스 2005-08-02 5272
  11.1.1 예제. 반올림, 올림, 내림 - 레드플러스 2005-11-25 8154
  카운트알고리즘.c - 레드플러스 2014-05-21 3846
  합계평균알고리즘.c - 레드플러스 2014-05-21 3972
  11.2. 예제. 최대값과 최소값 알고리즘 : 최대값최소값.c - 레드플러스 2005-08-02 12986
  11.2.1. 예제. 파일 처리를 사용한 합계/평균/최대값/최소값 - 레드플러스 2005-11-25 6608
  11.2.2 예제. 포인터를 사용한 최대값 알고리즘 - 레드플러스 2007-02-02 4815
  최댓값최솟값알고리즘.c - 레드플러스 2014-05-21 4351
  11.3. 예제. 오름차순 정렬 알고리즘 : 오름차순정렬.c - 레드플러스 2005-08-02 13583
  11.4. 예제. 선택 정렬(Selection Sort) 알고리즘 : 알고리즘_선택정... - 레드플러스 2005-08-02 5375
  선택 정렬(Selection Sort) 알고리즘 설명 엑셀 파일 선택정렬연습.xls(16 KB) 레드플러스 2005-08-08 5667
  선택 정렬(Selection Sort) 알고리즘 설명 텍스트 파일 - 레드플러스 2005-11-28 5090
  11.4.2. 예제. 선택 정렬(Selection Sort) 알고리즘 : 회전별 데이... - 레드플러스 2007-01-19 4798
  Re : 11.4.2. 예제. 선택 정렬(Selection Sort) 알고리즘 : 설... 선택정렬알고리즘설명.xls(14 KB) 레드플러스 2007-01-19 4406
  11.5. 예제 : 버블 정렬(Bubble Sort) 예제 : 알고리즘_버블정렬.c - 레드플러스 2005-08-05 6855
  11.6. 예제. 스위치를 사용한 버블 정렬 : 알고리즘_스위치사용버블정렬.c - 레드플러스 2005-08-05 5635
  11.7. 예제. 순위 구하는 프로그램 : 알고리즘_순위.c - 레드플러스 2005-08-06 5855
  11.13. 병합(MERGE) 알고리즘 - 레드플러스 2006-04-18 5408
  그룹(GROUP) 알고리즘 - 레드플러스 2006-04-19 4600
  수열(Sequence) - 레드플러스 2006-04-24 4398
  11.10.1 수열(Sequence) : 1/2 - 2/3 + 3/4 - 4/5 + ... - 레드플러스 2007-01-16 4515
  가까운 값(근사값;NEAR) 알고리즘 - 레드플러스 2006-10-19 13189
  11.12. 최빈값(Mode) 알고리즘 - 레드플러스 2006-10-19 7000
  최빈값(Mode) 알고리즘 최빈값알고리즘설명.xlsx(11 KB) 레드플러스 2009-05-28 9158
  11.8. 순차 검색 알고리즘 - 레드플러스 2006-10-19 6179
현재글 11.9. 이분(이진) 검색 알고리즘, 이진 탐색, 이진 검색 - 레드플러스 2006-10-19 6346
  11.10. 배수의 정렬 - 레드플러스 2007-01-26 4974
  11.11. 순서도(Flow Chart) : 알고리즘을 그림으로 표현하기 순서도(Flow Chart).ppt(32 KB) 레드플러스 2007-01-26 9140
  11.14. 예제. 기본적인 알고리즘 코드 : 피보나치수열.c - 레드플러스 2007-02-15 5697
다음글 10. 파일 처리 - 레드플러스 2005-07-26 6147
 
손님 사용자 Anonymous (손님)
로그인 Home