일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자바
- 그레이들
- TypeScript
- git
- 다이나믹 프로그래밍
- react
- vscode
- java
- Algorithm
- Redux
- LeetCode
- 동적 계획법
- 알고리즘
- Data Structure
- 리트코드
- db
- BFS
- DFS
- DP
- Database
- Graph
- 프로그래머스
- frontend
- 안드로이드
- network
- 백준
- VIM
- CS
- Python
- Javascript
Archives
- Today
- Total
늘 겸손하게
Algorithm - 버블 정렬 본문
버블 정렬
배열 정렬 알고리즘으로 거품이 수면 위로 올라오듯이 배열을 정렬한다 해서 버블 정렬이라는 이름이 붙여졌다.
버블 정렬 구현
길이가 n인 배열이 주어졌을때 오름차순으로 정렬하려면
1. 인덱스 0번 요소와 바로 오른쪽 요소값을 비교하여 0번 요소가 더 크면 두 값을 교환(swap)
2. 인덱스 1, 2, 3, ... n - 2번 요소에 대해 1번 과정 반복하면 배열의 최대값이 마지막에 배치된다.
3. 인덱스 1, 2, 3, ..., n - 3번 요소로 위 과정 반복
4. 인덱스 1, 2, 3, ..., n - 4번 요소로 위 과정 반복
5. 오름차순으로 정렬됨.
코드
public static void main(String[] args) {
int [] arr = {9, 4, 6, 1, 14, 5};
for (int i = 0 ; i < arr.length ; i++) {
for (int j = 1 ; j < arr.length - i; j++) {
if (arr[j-1] > arr[j]) {
int tmp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = tmp;
}
}
}
System.out.println(Arrays.toString(arr));
}
총 탐색 횟수는 n( n - 1 ) / 2번으로 시간복잡도는 O(n^2), 공간복잡도는 O(n)를 보인다.
'Algorithm' 카테고리의 다른 글
Java 진법 변환 (10진수 -> N진수, N진수 -> 10진수) (0) | 2023.07.26 |
---|---|
Algorithm - 유클리드 호제법 (0) | 2023.07.23 |
Algorithm - 플로이드 워셜 알고리즘 (0) | 2023.07.16 |
Algorithm - 소수 판단 (0) | 2023.07.15 |
Algorithm - 순열, 조합, 중복순열, 중복조합 (Java) (0) | 2023.07.11 |