Java/알고리즘
버블 정렬(Bubble Sort)
heoheos
2023. 3. 27. 18:32
동빈나 실전 알고리즘 강좌(Algorithm Programming Tutorial) 참고
https://www.youtube.com/playlist?list=PLRx0vPvlEmdDHxCvAQS1_6XV4deOwfVrz
실전 알고리즘 강좌 (Algorithm Programming Tutorial)
www.youtube.com
버블 정렬(Bubble Sort)
옆에 있는 값과 비교해서 더 작은 값을 앞으로 보내자
시간 복잡도 : O(N^2)
시간 복잡도는 선택 정렬과 같으나 더 비효율적 => 선택 정렬은 가장 작은 하나의 값을 찾아서 맨 앞의 값과 한 번씩 교환하지만 버블 정렬의 경우 서로 값을 교환하는 코드가 더 많이 실행되기 때문
정렬 알고리즘 중 가장 느린 알고리즘 = 버블 정렬 알고리즘
첫 번째 요소부터 마지막 요소까지 서로 양옆을 교환하면 최종적으로 마지막 요소가 가장 큰 값이 됨
따라서 그 다음부터는 그 값을 제외하고 양옆을 교환해 주면 됨
점점 비교할 요소가 -1 -2 -3으로 줄어듦
package algorithmProgramming;
public class BubbleSort {
public static void main(String[] args) {
int[] numbers = { 1, 10, 5, 8, 7, 6, 4, 3, 2, 9 };
for (int i = 1; i < numbers.length; i++) {
for (int j = 0; j < numbers.length - i; j++) {
if (numbers[j] > numbers[j + 1]) {
int tmp = numbers[j];
numbers[j] = numbers[j + 1];
numbers[j + 1] = tmp;
}
}
}
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i] + " ");
}
}
}