개발관련/알고리즘
[알고리즘] 버블정렬(Bubble sort) 정리, JAVA
90만식
2021. 1. 19. 23:39
728x90
[알고리즘] 버블정렬 정리
- 버블정렬이란?(위키백과 참고)
- 인접한 원소를 검사하여 정렬하는 방법
- 시간 복잡도가 O(n^2)로 상당히 느리지만, 코드가 단순하기 때문에 자주 사용 됨.
- 원소의 이동이 거품이 수면으로 올라 오는 듯한 모습을 보이기 때문에 지어진 이름
- 배열의 i, i+1번째를 비교하여 큰수를 오른쪽으로 밀어내는 방식.
- 버블정렬의 원리
- 입력으로 int[] arry = {6, 5, 3, 1} 배열을 비교하려고 한다.
- 첫번째 비교 루프를 시작한다.
- arry[0] = 6, arry[1] =5을 비교한다.
[6, 5, 3, 1]
^ ^
6 > 5 라면 6과 5를 변경하여 배열에 넣어준다.
[5, 6, 3, 1]
^ ^
- arry[1]=6, arry[2]=3을 비교한다.
[5, 6, 3, 1]
^ ^
6 > 3 이기 6과 3을 변경하여 배열에 넣어준다.
[5, 3, 6, 1]
^ ^
- arry[2]=6, arry[3]=1을 비교한다.
[5, 3, 6, 1]
^ ^
6 > 1 므로 6과 1을 변경하여 배열에 넣어준다.
[5, 3, 1, 6]
^ ^
- 이런 방법으로 계속해서 i, i+1 값의 대소를 비교하여 배열을 교체하여 주면 버블 정렬을 완성 시킬 수 있다.
3.버블정렬 소스화(JAVA)
package com.mansik.algorithm;
public class BubbleSort {
public static void main(String[] args) {
int[] array = {6, 5, 3, 1};
sort(array);
}
private static void sort(int[] array) {
System.out.print("input Array : ");
arrayPrint(array);
for(int i=0; i<array.length-1; i++) {
System.out.println("Loop Count["+i+"]");
if(array[i] > array[i+1]) {
int temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
}
arrayPrint(array);
}
}
public static void arrayPrint(int[] array) {
for(int i=0; i<array.length; i++) {
System.out.print(array[i]+",");
}
System.out.println("");
}
}
4. 출력 화면
728x90