버블 정렬은 이웃하는 숫자를 비교 후 작은 수를 앞으로 큰 수를 뒤로 보내는 정렬입니다.
나무위키에서 버블정렬 설명 애니메이션을 보면 이해가 더욱 쉽습니다!
[ 나무위키 링크 ]
https://namu.wiki/w/%EC%A0%95%EB%A0%AC%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98
시간 복잡도는 O(n^2) 이며 아래는 자바 코드입니다.
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
// 정렬 할 리스트
int [] list = {5, 4,6,7,3,8,14,73,46,66};
// 메소드 실행
bubbleSort(list);
// 결과 출력
System.out.println(Arrays.toString(list));
}
// 버블 정렬
static void bubbleSort(int[] intArr) {
// 0 ~ 배열 길이까지
for(int i=0; i<intArr.length-1; i++) {
// 0부터 배열 길이까지
for(int j=0; j<intArr.length-1; j++) {
int temp = 0;
// 배열[j]가 배열 [j+1] 보다 클 때 : 앞의 숫자보다 뒤의 숫자가 클 때
if(intArr[j] > intArr[j+1]) {
// temp = temporary = 임시의 = 배열[j]
// 데이터를 교환하기 위해 임시 변수에 배열[j] 값을 넣는다.
temp = intArr[j];
// 배열[j] = 배열[j+1]
intArr[j] = intArr[j+1];
// 배열[j+1] = 임시값
// 만약 위에서 temp 변수를 사용하지 않고 저장했더라면 배열[j] = 배열[j+1] 가 되기에 교환이 안됨
intArr[j+1] = temp;
}
}
}
}
}