관리 메뉴

지나가는 이야기

[C] 내림차순 정렬하기 / 버블 정렬 사용하기 본문

Computer language : 컴퓨터 언어/C

[C] 내림차순 정렬하기 / 버블 정렬 사용하기

지나가는 이야기 2020. 10. 15. 08:12
728x90
반응형

 

이번에는 내림차순으로 정렬하는 프로그램을 만들어 보겠습니다. 오름차순 정렬은 passing-story.tistory.com/179 여기를 참고하시면 됩니다.

 

[C] 오름차순 정렬하기 / 버블 정렬 사용하기

C언어를 이용하여 배열에 있는 데이터 값을 오름차순으로 정렬하는 프로그램을 만들어 보겠습니다. int data[8] = { 85,90,95,70,82,60,92,88 }; int data_size = sizeof(data) / sizeof(int); 먼저 정렬할 데이터..

passing-story.tistory.com

 

내림차순은 이전에 만든 오름차순 정렬 프로그램에서 기호 하나만 바꾸면 끝입니다.

 

// 오름차순
for (i = 0; i < data_size; i++) {
	for (j = 0; j < (data_size - 1) - i; j++) {
		if (data[j] > data[j + 1]) {	// 버블 정렬 사용
			temp = data[j];
			data[j] = data[j + 1];
			data[j + 1] = temp;
		}
	}
}

// 내림차순
for (i = 0; i < data_size; i++) {
	for (j = 0; j < (data_size - 1) - i; j++) {
		if (data[j] < data[j + 1]) {	// 버블 정렬 사용
			temp = data[j];
			data[j] = data[j + 1];
			data[j + 1] = temp;
		}
	}
}

위 코드의 내림차순 버블 정렬 사용 부분을 보면은 j가 j+1보다 작을 경우 위치를 변경합니다. 즉 큰 값이 앞으로 정렬이 됩니다. 이렇게 간단한 코드 변경으로 오름차순을 내림차순으로 바꿀 수 있습니다.

 

#include <stdio.h>

int main(void)
{
	int data[8] = { 85,90,95,70,82,60,92,88 };		// 정렬할 배열
	int i, j, temp = 0;								// 변수 초기화

	printf("Before : ");
	int data_size = sizeof(data) / sizeof(int);
	// sizeof(score) / sizeof(int)는 score배열의 크기를 구하는 방법으로 이것을 이용해 배열의 크기를 가져옴
	
	for (i = 0; i < data_size; i++) {
		printf("%4d", data[i]);	// 정렬 전 배열값 출력
	}

	for (i = 0; i < data_size; i++) {
		for (j = 0; j < (data_size - 1) - i; j++) {
			if (data[j] < data[j + 1]) {	// 버블 정렬 사용
				temp = data[j];
				data[j] = data[j + 1];
				data[j + 1] = temp;
			}
		}
	}

	printf("\nAfter  : ");
	for (i = 0; i < data_size; i++) {
		printf("%4d", data[i]);	// 정렬 후 배열값 출력
	}
	printf("\n");
	return 0;

}

위 코드는 전체 코드입니다. 이것으로 내림차순 정렬에 대한 포스팅을 마치겠습니다.

 

728x90
반응형
Comments