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.process
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 == true)
{
Console.WriteLine("{0}를 {1}위치에서 찾았습니다.", search, index);
}
else
{
Console.WriteLine("찾지 못했습니다.");
}
}
}
'.Net Project > .Net 3.5 Sp1' 카테고리의 다른 글
65장 델리게이트(delegate) (0) | 2009.08.13 |
---|---|
64장 알고리즘(병합) (0) | 2009.08.12 |
62장 알고리즘(순차검색) (0) | 2009.08.12 |
61장 정수형인덱스와문자열인덱스비교 (0) | 2009.08.12 |
60장 인덱스(Index) (0) | 2009.08.12 |