WEBn/Algorithm Study
[C] 숫자 오름차순 만들기
Pastel Whale
2021. 8. 4. 00:32
#include <stdio.h>
int main() {
int a[] = {95, 75, 85, 100, 50};
int i, j, temp;
int n = sizeof(a)/sizeof(int);
for(i= 0; i<n-1 ;i++){
for(j=0; j<4-i; j++){
if( a[j] > a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(i=0; i<5; i++){
printf("%d", a[i]);
}
return 0;
}
출력값
더보기
50 75 85 95 100
▨해설
n의 값
sizeof는 자료형(타입)의 크기를 바이트(byte) 단위로 구하는 연산자이다.
sizeof(int) // 4
sizeof 표현식 형식으로 자료형의 크기를 구할 수 있다. 표현식은 변수, 상수, 배열 등 요소를 뜻한다.
sizeof(a) // 배열 요소가 5개 이고, 숫자이므로 5 x 4 = 20n = 20/4 = 5
for문의 결과
i는 n-1인 4보다 작은 0, 1, 2, 3을 반복한다.j는 i가 0일 때 4번, 1일 때 3번, 2일 때 2번, 3일 때 1번 반복한다.
if( a[j] > a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
j=0 일 때,
a[0] > a[1] // 95 > 75 = true
temp = 95
a[0] = a[1] = 75
a[1] = temp = 95
∴ a[0] = 75, a[1] = 95
a[0]와 a[1]의 위치가 바뀌었다.
즉. a의 연달아 있는 두 요소를 비교했을 때 앞에 요소가 더 크다면, 순서를 바꿔준다.
그래서 i=0의 for문을 돌리면 a=[ 75 85 95 50 100 ]가 된다.
i = 1 일 때 a = [ 75 85 50 95 100 ]
i = 2 일 때 a = [ 75 50 85 95 100 ]
i = 3 일 때 a = [ 50 75 85 95 100 ]
이 되어, 배열 a의 요소들이 숫자의 크기대로 오름차순이 된다.
printf( "%d" , a[i] )를 출력하면 새로 바뀐 배열 a인 50 75 85 95 100이 나온다.