정렬(Sort) 알고리즘 - 버블정렬 BubbleSort (C#)

2022. 9. 28. 13:38알고리즘

반응형

정렬 알고리즘에서 가장 쉽고 기초적인 정렬방법입니다.

 

두 수를 비교해서 큰 수를 뒤로 보내는 방식입니다.

그림처럼 8과 2를 비교하여 앞의수가 더 크기 때문에 8과 2를 바꿔주고,

 

다음 8과 0을 비교해서 앞의 수가 더 크기 때문에 8과 0을 바꿔주면서 계속 비교하면 됩니다.

 

C#으로 작성된 버블정렬

10개의 데이터를 비교할 때 두 수를 비교하기 때문에 총 9번을 돌면되므로 - 1을 해줍니다.

 

루프를 한번 돌면 가장 큰 숫자가 맨 뒤에 위치하기 때문에 확정된 데이터에 대해 비교할 필요가 없습니다.

 

따라서 int last = max - i; 로 확정된 위치를 제외하고 비교를 합니다.

 

두 수를 비교하고 앞의 수가 더 크다면 둘의 위치를 교환합니다.

 

Swap 함수를 통해 두 수의 위치를 교환해주면 결과는 아래와 같이 나옵니다.

8, 2, 0, 7, 6, 4, 3, 5, 9, 1의 숫자들을 정렬한 결과

 

처음에 8과 2를 비교하여 swap해주었고, 다음 8과 0을 비교하여 swap해주었습니다.

 

이런식으로 계속 비교하여 swap해주면 아래 결과처럼 정상적으로 정렬된 모습을 확인할 수 있습니다.

 

추가로 재귀함수로 구현해본 버블정렬을 끝으로 마치겠습니다.

재귀함수로 구현된 버블정렬
재귀함수 호출
동일한 결과 확인

감사합니다.

 

반응형