본문 바로가기

나는 엔지니어/자료구조

선택 정렬 과 이진 탐색

.n >= 1 개의 정수를 정확하게 정렬한다.


배열을 이용한 선택 정렬 알고리즘

.배열 정의 list[i] ,  0 <=  i <  n


for ( i = 0 ; i < n  ; i++)

{

for( min = i + 1 ; min < n ; min ++ )

{

list[ i  ]보다 list [ min ]이 작다면

list[ i  ]의 값과 list [ min ]의 값을 교환

}


배열을 이용한 이진 탐색 알고리즘

.배열 정의 list[i] ,  0 <=  i <  n 인 정수

.찾을 데이터는 searchnum , 0 <=   searchnum  <  n 인 정수


1) 선택 정렬을 실시한다.


2) 왼쪽 오른쪽 중간의 배열 인덱스를 설정한다.

    left   = 0  

    right  = n-1

    middle  = ( left + right ) / 2


3) searchnum 과 list[middle] 을 비교한다.


4) 비교값이 searchnum > list[middle] 면 

    left = middle + 1

    middle  = ( left + right ) / 2

    3) 을 반복한다.


5) 비교값이 searchnum < list[middle] 면 

    right  = middle - 1

    middle  = ( left + right ) / 2

    3) 을 반복한다.


6) 비교값이 searchnum = list[middle] 면 

    middle값을 리턴 하고 프로그램을 종료한다.


while(there are more integers to check)

{

middle = (left + right) / 2

if(searchnum > middle )

left = middle + 1;

else if(searchnum < middle )

right = middle -1;

else

return middle;

}

'나는 엔지니어 > 자료구조' 카테고리의 다른 글

시/공간 복잡도  (0) 2012.07.21
순열  (0) 2012.07.21
알고리즘 명세  (0) 2012.07.21
기본 개념  (0) 2012.07.21