728x90
버블정렬이란.
- 두 인접한 원소를 검사하여 정렬하는 방법
- 정렬 속도는 느리지만 코드가 단순하여 자주 사용된다.
- 원소의 이동이 거품이 수면위로 올라오는 듯한 모습을 보여 지어진 이름이다.
과정
1. 첫 원소와 바로 다음의 원소를 비교하여 뒤바꾼다 한 원소씩 이동하며 반복한다.
2. 이렇게 한 사이클을 돌면 제일 큰값(오름차순의 경우)이 맨마지막에 위치 하게 된다.
3. 다시 맨첫 원소부터 정렬이 확정된 마지막 원소 전까지 1번 과정을 반복한다.
시간 복잡도
- Θ(n2)
코드
1) BubbleSort Class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class BubbleSort { public void bubbleSort(int[] unsortedList) { for(int i = 1; i < unsortedList.length; i++) { for(int j = 0; j < unsortedList.length - i; j++) { if(unsortedList[j] > unsortedList[j+1]) SortUtil.swap(unsortedList, j, j+1); } } SortUtil.printList(unsortedList); } public static void main(String[] args) { // TODO Auto-generated method stub int[] list = new int[]{3,1,4,5,2}; BubbleSort bubble = new BubbleSort(); bubble.bubbleSort(list); } } | cs |
2) SortUtil Class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class SortUtil { public static void printList(int[] list) { for(int num : list) System.out.println(num + " "); } public static void swap(int[] list, int num1, int num2) { int temp = list[num1]; list[num1] = list[num2]; list[num2] = temp; } } | cs |
코드해석
1. i에 대한 for문은 j에 대한 for문의 끝지점을 1씩 줄이는 목적
2. j에 대한 for문은 i에 대한 for문의 1사이클이 돌때마다 끝지점이 3 , 2 , 1 , 0 까지 줄어든다
3. j에 대한 for문에서 j가 1씩 증가할 때마다 j와 j의 바로 다음 원소의 크기를 비교하여 뒤 바꾼다.
'CS(Computer Science) > 알고리즘' 카테고리의 다른 글
알고리즘 - 그리디01 그리디(Greedy) 알고리즘이란? (0) | 2019.03.18 |
---|---|
JAVA 퀵정렬(Quick Sort)이란 - 수정중 (0) | 2018.11.18 |
JAVA 선택정렬이란(Selection Sort) (0) | 2018.10.28 |
알고리즘 성능분석 (0) | 2018.10.21 |
프린터 큐 (0) | 2018.09.12 |