Java 버블 정렬(Bubble sort)

Jinny·2022년 1월 2일
0

TIL

목록 보기
17/28
post-thumbnail

1. 버블 정렬

💡 버블 정렬은 첫 번째 자료와 두 번째 자료를, 두 번째 자료와 세 번째 자료, … 등으로 마지막-1 번째 자료와 마지막 자료를 비교하여 교환하면서 자료를 정렬하는 방식이다.
  • 서로 인접한 두 원소를 검사하여 정렬하는 알고리즘
    • 인접한 두 개의 레코드를 비교하여 순서가 맞지 않으면 서로 교환하는 방식
  • 1회전을 수행하고 나면 가장 큰 자료가 맨 뒤로 이동하므로 2회전에서는 맨 끝에 있는 자료는 정렬에서 제외한다.
    이렇게 정렬을 1회전 수행할 때마다 정렬에서 제외되는 데이터가 하나 씩 증가한다.

예제


실습

package ex.test;

import java.util.Scanner;

public class Question1 {

	public static void main(String[] args) {
//		Bubble sort 실습 : 5개의 정수를 입력 후 입력한 값들이 오름차순 정렬로 표현 되도록 구현하시오.
//		1) 패키지명, 클래스명, 메소드명을 요구사항에 맞게 제작
//		2) 입력은 반복문, Scanner 객체를 사용하여 5번 입력 받아야 함.(정수 5개 입력받는 배열사용)
//		3) 정렬 기법은 버블정렬을 이용하여 오름차순 정렬 되어야 함.
//		4) 정렬된 결과 출력은 반복문을 이용하여 출력 되어야 함.
//		5) 마지막에 첫 번째 수와 마지막 수를 합한 값을 출력할 수 있어야 함.
		
//		입력받을 Scanner 선언
		Scanner sc = new Scanner(System.in);
		
//		int형 배열 arr을 선언 및 초기화
		int [] arr = new int[5];
		
//		정수 5개 입력받는 반복문
		for(int i = 0; i < arr.length; i++) {
			System.out.print(i+1 + "번째 정수 입력 : ");
			arr[i] = sc.nextInt();
		}
		
//		반복문으로 2개씩 비교(첫 번째 자료와 두 번째 자료, 두 번째 자료와 세 번째 자료 ..)하여 더 작은 수가 앞으로 올 수 있도록 정렬
		for(int i = 0; i < arr.length-1; i++) { // 입력받은 배열 반복 0 ~ 4까지
			// -i를 하는 이유 -> 제일 큰 수가 맨 마지막으로 정렬이 됨 (맨 마지막은 비교 안해도 됨)
			for(int j = 0; j < arr.length-1-i; j++) { // 앞 숫자와 뒤 숫자 서로 비교할 반복문
				// ex) j = 0일 때, arr[0] > arr[0+1]로 앞자리가 숫자가 더 크다면
				if(arr[j] > arr[j+1]) {
					// 값을 옮겨주기 위해 tmp 변수 선언하여 큰 숫자인 arr[0]에 있는 값을 담아준다.
					int tmp = arr[j]; 
					// 그리고 비어있는 앞자리에 숫자가 작은 뒷자리 숫자를 arr[0]에 넣어준다.
					arr[j] = arr[j+1]; 
					// 임시로 tmp에 담아뒀던 큰 숫자를 arr[0+1]자리에 담아주면서 위치를 바꿔준다.
					arr[j+1] = tmp; 
				}
			}
		}
		
		System.out.print("정렬된 결과 : ");
		for(int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " "); // 작은수 ~ 큰수 정렬된 순서
		}
		System.out.println();
		
		System.out.println("정렬 후 첫 번째 수와 마지막 수의 합 : " + (arr[0] + arr[arr.length-1]));
		sc.close();
	}

}

출처 : https://pp-ppi.tistory.com/35
참고 : https://youtu.be/EZN0Irp2aPs

profile
코린이

0개의 댓글