버블정렬이란?
두 인접한 데이터의 크기를 비교해 정렬하는 방법이다.
간단하게 구현할 수 있지만 시간 복잡도는 O(㎡)으로 다른 정렬 알로그리즘보다 속도가 느린 편이다.
주로 loop를 돌면서 인접한 데이터 간의 swap 연산으로 정렬한다.
만약 특정한 루프의 전체 영역에서 swap이 한 번도 발생하지 않았다면 그 뒤에 있는 데이터가 모두 정렬됐다는 뜻이므로 프로세스를 종료해도 된다.
백준 2750번 문제를
sort를 사용할 수 있지만 n값이 작으므로 직접 정렬을 시도해서 문제를 풀어보겠다.
public class 수정렬하기 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int a[] = new int[n];
for(int i =0; i<n; i++) {
a[i] = Integer.parseInt(br.readLine());
}
//버블정렬
for (int i = 0; i<n; i++ ) {
for(int j =0; j<n-1-i; j++) {
if (a[j] > a[j+1]) {
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(int i = 0; i<n; i++) {
System.out.println(a[i]);
}
}
'코딩테스트' 카테고리의 다른 글
[삽입 정렬] & [퀵 정렬] & [병합 정렬] & [기수 정렬] (2) | 2024.02.27 |
---|---|
[선택 정렬] 백준 1427 (1) | 2024.02.27 |
[슬라이딩 윈도우 실전문제] DNA 비밀번호 - 백준12891 (1) | 2024.02.26 |
[투 포인터 실전 문제] 주몽의 명령 -백준 1940 (1) | 2024.02.26 |
[구간 합 실전 문제] 백준 11659 (1) | 2024.02.26 |