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]이었던 배열이 오름차순으로 깔끔하게 정렬된 것을 확인할 수 있다.