C언어 버블 정렬
버블 정렬은 주어진 파일에서 인접한 두 개의 숫자를 비교하여 그 크기에 따라서 서로 교환하는 방식입니다.
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개 값을 입력 받아 버블 정렬하는 예제를 보겠습니다.
} int r; main(){ for(r = 0; r < MAX; r++) { bubble(); //버블 함수 호출 } void bubble(){ |
함수의 동작을 살펴보겠습니다.
버블 함수를 선언하여 버블 함수에서 동작 시켜 메인 함수에서 호출 시켜서 출력 시키게 끔 코딩 했는데,
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; //이 부분은 교환하기 위해 임시 변수를 선언하고, 임시 변수에 값을 저장하여 나중에 교환하기 위함입니다.
}
}
}