본문 바로가기

카테고리 없음

[C언어] 오름차순으로 정렬하기 - [설계 및 구현]

void main()
{
	int su[10], i, ii, temp;

	for(i = 0; i < 10; i++)
	{
		printf("정수를 입력해 주세요 : ");
		scanf("%d", &su[i]);
	}

	for(i = 0; i < 9; i++)
	{
		for(ii = 0; (ii + i) < 9; ii++)
		{
			if(su[ii] > su[ii + 1])
			{
				temp = su[ii];
				su[ii] = su[ii + 1];
				su[ii + 1] = temp;
			}
		}
	}

	for(i = 0; i < 10; i++) printf("%d\t", su[i]);
}

10개의 정수를 입력받기 위해 su[10]를 선언한다. 저장된 정수 값을 바꾸기 위해 temp를 선언한다. 반복문 실행을 위해 i, ii를 선언한다. 이중 for문을 돌려야 하기 때문에 ii를 선언했다.


정렬하는 알고리즘은 비교적 간단하다. 배열 중 0번지와 1전지에 있는 값을 비교해 0번지가 크다면 서로의 값을 바꾸어 주면 된다. 또 1번지의 값과 2번지의 값을 비교해 바꾸어 주고, 이렇게 10번지까지 비교를 하게 되면 10번지에는 가장 큰 값이 들어 있다.


이제 이를 반복하되 10번지에는 이미 제일 큰 값이 들어 있으므로 9번지까지 실행하면 된다. 다음에는 8번지까지 실행하면 된다. 말로 설명하니 어려운데 프로그래밍한 것을 보면 금방 이해 될 꺼라 생각한다.