-
C언어 버블 정렬Visual Studio/C 실전 2015. 3. 31. 16:15
버블 정렬은 주어진 파일에서 인접한 두 개의 숫자를 비교하여 그 크기에 따라서 서로 교환하는 방식입니다.
9, 6, 2, 5, 7 이란 숫자가 있습니다.
첫 번째 회전
6, 9, 2, 5, 7 -> 9가 6보다 크므로 서로 교환합니다.
6, 2, 9, 5, 7 -> 9가 2보다 크므로 서로 교환합니다.
6, 2, 5, 9, 7 -> 9가 5보다 크므로 서로 교환합니다.
6, 2, 5, 7, 9 -> 9가 7보다 크므로 서로 교환합니다.
두 번째 회전
2, 6, 5, 7, 9 -> 6이 2보다 크므로 서로 교환합니다.
2, 5, 6, 7, 9 -> 6이 5보다 크므로 서로 교환합니다.
2, 5, 6, 7, 9 -> 6이 7보다 작으므로 그대로 둡니다.
2, 5, 6, 7, 9 -> 7이 6보다 작으므로 그대로 둡니다.
이렇게 맞을 때 까지 회전 시켜줍니다.
이제 10개 값을 입력 받아 버블 정렬하는 예제를 보겠습니다.
}
#define MAX 10int r;
int data[MAX];
void bubble(); //버블 함수 선언main(){
for(r = 0; r < MAX; r++) {
printf("%d번째 숫자를 입력하세요 : ", r+1);
scanf("%d", &data[r]);
}
printf("입력 받은 값 : ");
for(r = 0; r < MAX; r++)
printf("%d ", data[r]);
printf("\n");bubble(); //버블 함수 호출
}
void bubble(){
int x, y, temp;
for(x = 0; x < MAX; x++){
for(y = 0; y < MAX-1-x ; y++){
if(data[y] > data[y+1]){
temp = data[y];
data[y] = data[y+1];
data[y+1] = temp;
}
}
}
printf("최종 결과 값 : ");
for(r = 0; r < MAX; r++)
printf("%d ", data[r]);
printf("\n");
}함수의 동작을 살펴보겠습니다.
버블 함수를 선언하여 버블 함수에서 동작 시켜 메인 함수에서 호출 시켜서 출력 시키게 끔 코딩 했는데,
int x, y, temp;
for(x = 0; x < MAX; x++){
for(y = 0; y < MAX-1-x ; y++){ //처음 비교를 한 이후 다음 수를 비교해야 하기 때문에 x값 만큼 줄여나갑니다.
if(data[y] > data[y+1]){ //비교 대상 숫자가 선택 정렬과는 다르게 근접한 숫자와 비교를 해야 하기 때문에 비교 대상 항목 보다 1만큼//큰 숫자를 비교해야 합니다. 그래서 y+1을 넣어줍니다.
temp = data[y];
data[y] = data[y+1];
data[y+1] = temp; //이 부분은 교환하기 위해 임시 변수를 선언하고, 임시 변수에 값을 저장하여 나중에 교환하기 위함입니다.
}
}
}'Visual Studio > C 실전' 카테고리의 다른 글
C언어 도서관 좌석 예약 프로그램 (8) 2015.06.19 C언어 선택 정렬 (0) 2015.03.31 100명의 신상 정보를 관리하는 프로그램 (0) 2012.09.23