일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 객체
- 재귀호출기본
- jvm
- class
- 2884
- 자료구조
- HTML
- 클래스 패스
- 알고리즘
- 객체지향
- 디렉티브
- bubble-sort
- lang package
- 백준 알고리즘
- java
- try&catch
- 암호론
- LANG
- OOP
- 자동 형변환
- 연결된 예외
- 백준
- JSP
- 형변환 연산자
- BufferedWrite
- 프로그래밍
- 소수판정
- 현대암호
- 공개키 암호
- 예외처리
- Today
- Total
코드일기장
Java로 이용한 버블정렬 본문
배열과 관련된 정렬이다. 정렬은 물건을 크기순으로 나열하는 것을 의미한다.
예를 들면, 도서관에 가보면 책들이 주제, 제목, 저자 또는 발간 연도순으로 정렬해 놓은 것을 볼 수 있다. 이러한 정렬 덕분에 우리는 도서관에서 내가 읽고 싶은 책이 어디에 있는지 유추할 수 있고 빠르게 찾아낼 수 있다.
정렬은 컴퓨터 공학 분야에서 가장 기본적이고 중요한 알고리즘이다. 특히 일상생활에서도 많이 쓴다. 네이버페이로 쇼핑을 한다고 생각해보자 보통 사람들은 평점을 내렴 차순으로 정렬해 별점이 가장 높은 물건이 무엇인지 알고 싶어 할 것이다. (혹은 제일 싼 물건) 이처럼 정렬은 제일 많이 쓰이고 제일 중요한 알고리즘이다. 버블 정렬을 깊게 알아보기 전, 버블 정렬 관련 유튜브 영상을 한 개 올려주겠다.
https://www.youtube.com/watch?v=lyZQPjUT5B4
Java코드를 이용해 버블정렬이 어떤 식으로 구동되고 어떤 식으로 짜야하는지 알아보자.
public class Main{
public static void main(String[] args) {
int[] bubbletest = {10,50,40,30,20};
for(int k=0;k<bubbletest.length;k++) {
for(int i=0;i<bubbletest.length-1;i++) {
if(bubbletest[i]>bubbletest[i+1]) {
int tmp=bubbletest[i];
bubbletest[i]=bubbletest[i+1];
bubbletest[i+1]=tmp;
}
}
}
System.out.print("[");
for(int i=0;i<bubbletest.length;i++) {
System.out.printf("%d ",bubbletest[i]);
}
System.out.print("]");
}
}
bubbletest []라는 배열의 초기 값은 매우 불규칙적이다. 하지만 버블 정렬을 이용하면 매우 깔끔하고 보기 쉽게 정렬할 수 있다. 본 코드의 유일한 if문을 자세히 보자
if문은 bubbletest[i]>bubbletest[i+1] 이면
tmp변수에 더 큰 값인 bubbletest[i]로 초기화해준다.
더 큰 값 bubbletest [i]는 더 작은 값인 bubbletest [i+1]로 바꿔준다.
더 작은 값이었던 bubbletest [i+1]은 큰 값을 저장시켜놓은 tmp변수로 바꿔준다.
그럼 큰 값이 작은 값보다 index가 1 증가할 것이고 작은 값은 index가 1이 감소한 자리에 있을 것이다.
[10,50,40,30,20]이었던 배열이 오름차순으로 깔끔하게 정렬된 것을 확인할 수 있다.
'컴퓨터 과학 > 자료구조' 카테고리의 다른 글
[Java] 자바의 LinkedList (0) | 2022.07.04 |
---|---|
[Java] ArrayList (0) | 2022.03.28 |
[Java] List Interface (리스트 인터페이스) (0) | 2022.03.18 |
[Java] 컬렉션 프레임웍(collections framework), Collection인터페이스 (0) | 2022.03.18 |
배열 요소의 최댓값, 배열 요소 역순, 두 배열의 비교, 기수변환 (0) | 2022.01.15 |