앞에서부터 2개씩 비교해서 작은 것을 앞으로, 큰 것을 뒤로 보낸다. (제일 뒤부터 정렬된다)
- 시간 복잡도 : O(n^2)
코드
public class Test{
private static void bubbleSort(int[] arr){
bubbleSort(arr, arr.length-1);
}
private static void bubbleSort(int[] arr, int last){
if(last > 0){
for(int i=1; i<=last; i++){
if(arr[i-1] > arr[i]){
swap(arr, i-1, i);
}
}
bubbleSort(arr, last-1);
}
}
private static void swap(int[] arr, int source, int target){
int tmp = arr[source];
arr[source] = arr[target];
arr[target] = tmp;
}
private static void printArray(int[] arr){
for(int data : arr){
System.out.print(data + ", ");
}
System.out.println();
}
public static void main(String[] args){
int arr[] = {3, 5, 4, 2, 1};
printArray(arr);
bubbleSort(arr);
printArray(arr);
}
}
'Preparing Coding Test > Algorithm' 카테고리의 다른 글
[자료구조/C, Java] 계수 정렬(Counting Sort) (0) | 2020.08.20 |
---|---|
[자료구조/Java] 선택 정렬(Selection Sort) (0) | 2020.08.20 |
[자료구조/Java] 병합정렬(Merge Sort) (0) | 2020.08.19 |
[자료구조/Java] 퀵 정렬(Quick Sort) (0) | 2020.08.19 |
[자료구조/Java] Graph 검색 DFS, BFS 구현 (0) | 2020.08.14 |