'Computer/Algorithm'에 해당되는 글 3

  1. 2008/01/15 dr.Dorothy 최빈값 찾기
  2. 2008/01/03 dr.Dorothy 버블정렬
  3. 2008/01/03 dr.Dorothy 선택정렬
갑자기 최빈값 찾는 법을 사용할 일이 생겨서 예전 코드를 봤다..
단순히 코드를 짧게 하려고 비 효율적으로 세팅해 둔게 눈에 거슬린다..

입력되는 숫자의 범위가 적당하다면 그냥 인덱스에 숫자를 넣는 방법도 있을텐데..ㅉㅉ

이때는 뭐.. 코드 짧게 하려고 별짓을 다 했던 시절이었으니.. 일단 패스..
2008/01/15 21:48 2008/01/15 21:48

버블정렬

Computer/Algorithm | 2008/01/03 09:01

버블 정렬의 개요

주어진 파일에서 두 개의 인접한 레코드의 키를 비교해서..
 키 값에 따라 레코드의 위치를 서로 교환한다..

n개의 입력 레코드로 구성된 파일에서..
오름차순정렬의 경우 첫 번째 레코드와 두 번째 레코드의 키를 비교해서..
키 값이 작은 레코드를 앞에 위치시킨 후..
두 번째 레코드와 세 번째 레코드의 키를 비교하여..
키 값이 작은 레코드의 위치를 결정하는 과정을 반복..
마지막으로 n-1번째와 n번째 레코드를 비교하여 위치를 교환하면 1회의 반복이 완료!!..
 
이때 n번째 위치하는 레코드는 키 값이 가장 큰 레코드가 된다..

다시 n 번째 위치한 레코드를 제외한 나머지 n-1개의 레코드를 위와 동일한 방법으로 반복..
이때 n-1번째 위치한 레코드는 두 번째로 큰 레코드가 된다..

이와 같은 작업을 반복 수행하며 마지막 n-1회의 반복에서는..
첫 번째와 두 번째 레코드의 키를 비교하여 작은 키 값을 가진 레코드를..
첫 번째에 위치시킴으로써 모든 작업이 완료됨..

버블 정렬의 특징

 - 레코드를 계속 교환하므로 레코드의 크기가 큰 경우에 불리
 - 거의 정렬이 된 화일일 경우 유리
 - 안정적인 제자리 정렬


버블정렬의 구조는 다음과 같다.

2008/01/03 09:01 2008/01/03 09:01

선택정렬

Computer/Algorithm | 2008/01/03 08:50

선택 정렬의 개요

배열             0   1  2  3  4  5   6  7  8  9
원소 10개      8,10, 4, 3 , 9 ,7 , 6, 2 ,1, 5
이러한 정렬되지 않은 원소들이 있다.
                   --------------------->
     9 개의 원소를 순환한다. i=0 , min=0 -> min=8  
                       ------------------>
     8 개의 원소를 순환한다. i=1 , min=1 -> min=7
                                                 .
                                                 .
                                                 .

선택정렬은 처음 원소 배열 0위치를 min 값에 넣고 다른 모든 원소 9개를 순환한다..
순환하면서
현재 min 값보다 작은 값들이 있으면..
그 값을 min에 주소값 i를 넣어주고 계속 회전을 한다..

첫번째 회전이 끝나면, min에는 가장 작은 값을 가지고 있는 배열 주소가 저장된다.
각 루프가 끝나면 min 주소값의 원소와 시작 i의 원소를 바꾼다.

선택정렬의 특징

 - 레코드가 실제로 교환되는 것은 많아야 한번 뿐이므로..
   작은 키와 매우 큰 레코드를
가지는 화일을 정렬하는데 적합하다.
   (적합하다고 하나, 거의 사용 안한다.)

 - 실행 시간은 입력 자료의 순서에 민감하지 않다.
   (거의 정렬되거나 안되거나 상관없다.)

 - 제자리 정렬
   (배열의 길이가 변하지 않는다.)

 - 불안정적
   (원소의 순서가 처음보다 뒤죽박죽으로 된다.)

선택 정렬의 구조는 다음과 같다.

2008/01/03 08:50 2008/01/03 08:50