Blog Content

    티스토리 뷰

    10.C# - 알고리즘 : 검색 (Serch)

    반응형
    배열에 저장된 값들 중에서 사용자가 입력한 값이 저장된 배열에 몇번째 위치에 있는지를 찾는 예제 입니다.
    예제1에서는 순차적인 앞에서 부터 차례대로 검색하는 방법이고,
    두번째 예제2는 사용자가 입력한 값을 가지고 중간 배열부터 찾는 예제 입니다.
    속도면에서는 예제2가 빠릅니다.

     Serch.cs
    using System;

    public class 이진검색
    {
        public static void Main()
        {
            //[1] Input
            int[] data = { 1, 3, 5, 7, 9 };
            Console.WriteLine("찾을 데이터 : ");
            int search = Convert.ToInt32(Console.ReadLine());
            bool flag = false; //찾았으면 true 그렇지않으면 false
            int index = -1; //찾은 위치

            int low = 0; int mid = 0; int high = 0; //이분탐색 관련 변수
            low = 0; high = data.Length - 1;
          
            //[2]검색
            #region 순차검색(예제1
            /*
            for (int i = 0; i < data.Length; i++) {
                if (search == data[i]) {
                    flag = true;
                    index = i; }
            }
            */
            #endregion

            //이분탐색
            while (low <= high)
            {
                mid = (low + high) / 2; //중간값(검색할 데이터)
                if (data[mid] == search)  {
                    flag = true;
                    index = mid;
                    break; }

                 if (data[mid] < search) {
                    low = mid + 1; }
                else {
                    high = mid - 1;  }
            }
                //[3]Output
                if (flag) {
          Console.WriteLine("{0}를 {1}위치에서 찾았습니다.", search, index);
                }
                else {
                    Console.WriteLine("찾지 못했습니다");
                }
        }
    }

    결과화면


    반응형

    'C#' 카테고리의 다른 글

    12.C# - 알고리즘 : 병합 (MEARGE)  (0) 2009.08.12
    11.C# - 알고리즘 : 카운터 (Count)  (0) 2009.08.12
    49.C# - Indexer (인덱서)  (0) 2009.08.12
    48.C# - 정수형 인덱서와 문자열 인덱서  (0) 2009.08.12
    47.C# - 속성 (Property)  (0) 2009.08.12

    Comments