쌤리

Bubble Sort, 버블 정렬, 거품정렬 본문

자바 JAVA/자바 기초

Bubble Sort, 버블 정렬, 거품정렬

saml2l 2020. 4. 26. 22:44
  • 자바의 기본 정렬 중 하나인 거품 정렬을 알아보자.
  • 물속에서 공기 방울이 가장 큰 거품이 맨위로 올라오는 것과 같은 이치.
    ※(아직 내 실력은 거품이다ㅠㅠ 거품이 생기기 조차 못함 ㅠ)  
  • 정렬 대상인 n번째 인덱스와 n+1 인덱스의 값을 비교해서 더 큰 수를 뒤로 보내는 정렬 방법이다.

1.

3 1 2 4 6 5

 

int[] nums = {3, 1, 2, 4, 6, 5};
  • 위와 같은 배열이 선언되었다.
  • 첫 번째 인덱스에 있는 3은 이제 자기 자리를 찾기 위한 여정을 떠난다.
  • 3과 1을 비교하면 3 이 1보다 크다. 3을 옆으로 보내자
1 3 2 4 6 5
  • 3은 이제 2를 만났다. 3은 2보다 크니깐 2는 알아서 자리를 비켜준다.
1 2 3 4 6 5
  • 3은 자기보다 작은 1과 2를 지나쳐 4를 만났다. 인생은 실전이다. 약육강식의 법칙이 적용된다.
  • 3은 4보다 작다. 4를 지나갈 수 없어서 현 위치를 지키기로 했다.
  • 위와 같은 상황을 아래와 같이 코드로 표현해보자
for(int i = 0; i < nums.length - 1; i++) {
  if(nums[i] > nums[i + 1]) {
     int temp = nums[i];
     nums[i] = nums[i + 1];
     nums[i + 1] = temp;
  }
}
  • 이렇게 끝! 이면 좋겠지만 6 과 5 가 남았다. 첫 번째 인덱스에 있는 숫자인 3을 자기 자리를 찾기 위한 여행을 보냈으니 나머지 2, 3, 4, 5, 번째 인덱스에 있는 숫자들을 여행 보내야 한다. 마지막 인덱스 에 있는 숫자는 여행을 갈 필요가 없다. 이미 정렬이 끝나있을테니
  • 이 과정을 배열길이 만큼 다시 반복 하면 숫자들을 제자리를 찾아갈 것이다.
class Main {
  public static void main(String[] args) {
   int[] nums = {3, 1, 2, 4, 6, 5};

   for(int j = nums.length - 1; j > 0; j-- )
     for(int i = 0; i < j; i++) {
       if(nums[i] > nums[i + 1]) {
         int temp = nums[i];
         nums[i] = nums[i + 1];
         nums[i + 1] = temp;
      }
    }
  }
}

※ 실행 해보도록 하자!

 

 

※ 원리를 이해하기 좋은 영상이다. 시간이 오래 걸리니 제발 2배속으로 보기를 추천한다.

'자바 JAVA > 자바 기초' 카테고리의 다른 글

생성자, constructor  (0) 2020.04.27
순위 정렬, 랭킹 정렬  (2) 2020.04.26
추상 클래스, abstract class  (0) 2020.04.24
클래스와 객체 Class & Object  (0) 2020.04.24
코드업 3019 풀이  (0) 2020.04.21
Comments