버블 정렬

Download Report

Transcript 버블 정렬

2014년
•정보올림피아드
•정렬 알고리즘
작성자
•인천 시대컴퓨터학원
•곽 명 철
http://cafe.daum.net/sidaecomputer 032)427-74941
선택 정렬(sort)을 이용하여 오름차순으로 정렬
S TA R T
반복
i = 1, N -1
반복
변수설명
N : 정렬하고자 하는 수치 데이터의 갯수
i
: 정렬의 외부 회전수, 배열의 첨자 등을 위한 변수
j
: 정렬의 내부 회전수, 배열의 첨자 등을 위한 변수
TEMP : 두 변수간의 값을 서로 바꾸기 위한 변수

A (N ) : 배열
N : 전체지료
( 1 )
( 2 )<=A (J)
A (i)
No
Y es
TE M P = A (i)
( 3 )
A (J) = ( 4 )
( 5 )
출력 A (i)
END
2
버블 정렬을 이용하여 오름차순으로 정렬
S TA R T
변수설명
N : 정렬하고자 하는 수치 데이터의 갯수
i : 정렬의 회전수를 계산하기 위한 변수
j : 배열의 첨자 등을 위한 변수
FLAG : 데이터의 교환이 발생하지 않을 경우 비교가 반복되는
것을 방지하기 위한 변수
TM : 두 변수간의 값을 서로 바꾸기 위한 변수

N = 10
i= 0
FLA G = ( 1 )
i= i+ 1
J=0
J=( 2 )
( 3 ) : A (J+1)
<=
>
TM = A (J)
A (J) = ( 4 )
A (J+1) = TM
FLA G = 1
NO
J >= (N - i)
YES
i >= (N - 1)
YES
NO
NO
( 5 )= 0
YES
S TO P
3
버블정렬 응용
• 문제설명
1.
배열 A(N)에 저장되어 있는 N개의 정수 값에 대하여 버블 정렬을 이용하여 오름차순으로 정렬하고
정렬된 정수 값 중 최대값과 최소값을 제외한 N-2개의 정수에 대한 표준편차를 구하여 출력
2.
N개의 정수는 서로 다른 값이며 N>5로 가정한다.
3.
N개의 정수 값 중에서 최대값과 최소값을 뺀 N-2개의 정수에 대한 표준편차는 아래의 공식으로 구한
다.
4.
표준편차 = SQRT{[(A(2)-AVG)+(A(3)-AVG)+(A(4)-AVG)+.... +(A(N-1)-AVG)] / (N-2)}
5.
AVG : N-2개의 정수값에 대한 산술평균
6.
SQRT() 함수는 양의 제곱근을 반환하는 함수이다. (예) SQRT(25) = 5
7.
배열 A(N)이 가지는 값은 A(1), A(2) ~ A(N) 포인터의 값을 의미한다. (예) A(10) : A(1), A(2) ...
A(10)
8.
반복 i = 1, N, 1은 변수 i의 초기치는 1, 최종치(목적치)는 N, 증감치는 1을 의미한다.
4
START
K=2
SUM=0, STN=0
¹Ýº¹
i = 1, N, 1
NO
K<=(N- 1)
YES
A(i) = "Á ¡¼ ö
°ª "
SUM = SUM + ( ¨ê )
¹Ýº¹
i = 1, N- 1, 1
¹Ýº¹
K=K+1
j = 1, ( ¨ç ), 1
AVG = SUM / (N- 2)
A(j) < ( ¨è )
NO
¹Ýº¹
L = 2, N- 1, 1
YES
TEMP = A(j)
(
¨é
)
A(j+1) = TEMP
TEMP = ( ¨ë )
STN = STN(TEMP*TEMP)
STN = SQRT(STN / (N- 2))
à â·Â STN
END
5
버블 정렬 (응용 2 )

문제설명
1.
버블 정렬 기법을 응용하여 한번은 왼쪽에서 오른쪽으로 진행 하면서 최대 값을 우측으로 보내고,
한번은 오른쪽에서 왼쪽으로 진행하면서 최소 값을 좌측으로 보내는 방법을 반복하면서 정렬하는
기법이다. 이 알고리즘을 이용하여 크기가10인 배열에 저장되어 있는 10개의 정수를 오름차순으
로 정렬
2.
배열의 크기가 10일 경우 배열의 요소는 0부터 9까지 구성된다. 예를 들어, A라는 배열의 크기가
10일 경우 배열의 요소는 A[0]부터 A[9]로 구현된다고 가정한다.
6
7
삽입 정렬
START
• 변수설명
TOE(20) : 데이터 배열
I : 정렬 회전 수 및 KEY값 위치 지정변수
KEY : KEY값 삽입위치 지정변수
J : 입력 받은 숫자의 개수 저장변수
I=2
KEY = TOE(I)
J=I- 1
KEY < TOE(J)
no
yes
TOE(J+1) = ( ¨ç )
( ¨è ) = J - 1
yes
J >= 1
no
TOE(J+1) = ( ¨é )
I = ( ¨ê )
no
( ¨ë ) > 20
yes
STOP
8
병합 정렬
½Ã
ÀÛ
• 변수설명
배열 A(I)는 1 ~ N 까지,
배열 B(J)는 1 ~ M 까지 자료를 가진다.
배열 C(K)는 N+M개의 개수를 가진다.
I, J, K : 배열첨자 변수
A(N), B(M), C(K)
READ A(I) = 1, N
B(J) = 1, M
I=1, J=1, K=1
Yes
A(I)>=( ¨ç )
No
C(K) = ( ¨è )
( ¨é ) = B(J)
I =I +1
Yes
(
¨ê
)
K=K+1
K=K+1
I <= N
J <= M
No
No
¹Ýº¹
J = J, M
¹Ýº¹
Yes
I = I, ( ¨ë )
C(K) = B(J)
C(K) = A(I)
(
(
¨ì
)
¨ì
)
³¡
9
오름차순 정렬되어 있는 데이터 이분 검색
• 변수설명
L : 검색영역의 시작 위치 인덱스 변수
H : 검색영역의 끝 위치 인덱스 변수
M : 중간 값 변수
B : 자료가 기억된 배열
N : 배열에 기억된 자료 수
0
1
2
3
4
5
6
7
8
9
10
20명의 국,영,수 데이터를 입력받아
총점, 평균, 석차 구하기
• 변수설명
S(20) 총점 배열
RANK 석차
START
A(20) 평균 배열
J 순번
S(20), A(20)
LOOP
J = 1, 20
KOR, ENG MAT
(
N = N+1
¨ê
90
80
96
85
70
)
LOOP
K = 1, 20
NO
( ¨ç ) = KOR+ENG+MAT
( ¨ë )
YES
AVG = (
¨è
RANK = RANK+1
)
( ¨é ) = AVG
YES
NO
J, S(J), A(J), RANK
N < 20
STOP
11