1. 목적
- 반복문에 대해 이해한다.
- 내림차순 숫자 정렬을 이해한다.
2. 문제 (점수 : 25 점)
- -10 ~ 10 사이의 임의의 정수 10개를 생성하여 출력후 다시 크기가 큰 순서대로 정렬하여 출력하는 프로그램을 작성하라.
- 중복에 대한 처리는 하지 않고 느야 같이 정렬한다.
- 출력 화면
정렬후 : 9 4 4 3 0 -1 -3 -6 -9 -10
Press any key to continue
3. 이해
- 내림차순 정렬을 아는가?
- 난수를 원하는 범위에서 출력할수 있는가?
- 정렬을 위한 알고리듬을 이해하는가?
4. 코드
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int i,j,swap;
int in[10] = {0};
i = j = swap = 0;
srand((unsigned)time(NULL));
rand();
printf("정렬전 : ");
for(i = 0; i < 10; i++)
{
in[i] = rand() % 21 - 10;
printf("%d ", in[i]);
}
printf("\n정렬후 : ");
for(i = 0; i < 10; i++)
{
for(j = i + 1; j < 10; j++)
{
if(in[i] < in[j])
{
swap = in[i];
in[i] = in[j];
in[j] = swap;
}
}
printf("%d ", in[i]);
}
putchar('\n');
return 0;
}
5. 해설
- 숫자를 넣을때 같이 출력을 했고 정렬을 하면서 같이 출력을 해서 반복문 사이에 printf 문이
있습니다.
- swap 가 교환을 위해 임시로 담은 변수 입니다.
- rand() 로 -10 ~ 10 의 숫자를 만드는 원리는 ( 32767 ) % 21 => ( 0 ~ 20 )- 10 =>
-10 ~ 10 입니다.
- 내림차순 정렬은 큰값이 작은 값으로 내려가는 모습이 폭포수 처럼 아래로 내리는 모양을 하였기
에 내림차순이라 하며 오름차순은 큰값이 밑에 있고 작은수 방향으로 올라가는 모습을 하여 오름
차순이라 하면 이해하기 쉽습니다.
6. 참고
- http://mwultong.blogspot.com/2006/10/c-int-sort.html : 내림차순 정렬
- 유사 문제