알고리즘 - 10. 검색(Search)
.NET프로그래밍/C# 3.5 SP1 2009. 8. 13. 17:30 |using System;
public class 이진검색
{
public static void Main(string[] args)
{
//[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
#region 순차검색
for (int i = 0; i < data.Length; i++)
{
if (data[i] == search)
{
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("찾지 못했습니다.");
}
}
}
'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글
53. 대리자(Delegate) (0) | 2009.08.13 |
---|---|
알고리즘 - 11. 병합정렬(Merge) (0) | 2009.08.13 |
52. 정수형인덱서와 문자열인덱서 (0) | 2009.08.13 |
51. 인덱서(Indexer) (0) | 2009.08.13 |
50. 속성(Property) (0) | 2009.08.13 |