본문 바로가기

자바

버블 정렬(bubble sort)

버블 정렬(bubble sort)

- 서로 인접한 두원소를 검사하여 정렬하는 알고리즘.

- 인접한 2개의 레코드를 비교하여 크기가 순서대로 되어 있지 않으면 서로 교환한다.

 

-첫번째 자료와 두번째 자료를, 두번째 자료와 세번째 자료를, 세번째와 네번째를 비교하면서 교환해서 자료를 정렬한다.

- 1회전을 끝나고나면 가장 큰 자료가 맨뒤로 이동하고, 2회전에서는 두번째로 큰 자료가 뒤에서 두번째에 정렬이된다.

 

 

버블 정렬 예제1

	public static void main(String[] args) {
		// 버블정렬
		int[] arr = {40, 10, 5, 30, 8};
		
		if(arr[0] > arr[1]) {
			int temp;
			temp = arr[0];
			arr[0] = arr[1];
			arr[1] = temp;
		}

		if(arr[1] > arr[2]) {
			int temp;
			temp = arr[1];
			arr[1] = arr[2];
			arr[2] = temp;
		}
		
		if(arr[2] > arr[3]) {
			int temp;
			temp = arr[2];
			arr[2] = arr[3];
			arr[3] = temp;
		}
		
		if(arr[3] > arr[4]) {
			int temp;
			temp = arr[3];
			arr[3] = arr[4];
			arr[4] = temp;
		}
		
		
		for(int i= 0; i<arr.length; i++) {
			System.out.println(arr[i]);
		}
		
		System.out.println("첫번째 사이클 종료");
        }

5개의 자료를 가지고 있는 배열 [40, 10, 5, 30, 8]을 버블정렬로 첫번째 사이클을 돌린결과

제일 큰수인 40이 배열 제일 마지막으로 이동되었다.

 

 

 

버블정렬 예제1

 

 

package ex06;

public class BubbleEx2 {

	public static void main(String[] args) {
		// 버블정렬
		int[] arr = {50, 40, 30, 10, 8, 5};
		
		for(int i=0; i<5; i++) {
			if(arr[i] > arr[i+1]) {
				int temp;
				temp = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = temp;
			}
		}
		
		
		for(int i= 0; i<arr.length; i++) {
			System.out.println(arr[i]);
		}
		
		System.out.println("첫번째 사이클 종료");
		
		
		for(int i=0; i<4; i++) {
			if(arr[i] > arr[i+1]) {
				int temp;
				temp = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = temp;
			}
		}
		
		for(int i= 0; i<arr.length; i++) {
			System.out.println(arr[i]);
		}
		
		System.out.println("두번째 사이클 종료");
		
		
		for(int i=0; i<3; i++) {
			if(arr[i] > arr[i+1]) {
				int temp;
				temp = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = temp;
			}
		}
		for(int i= 0; i<arr.length; i++) {
			System.out.println(arr[i]);
		}
		
		System.out.println("세번째 사이클 종료");
		
		
		for(int i=0; i<2; i++) {
			if(arr[i] > arr[i+1]) {
				int temp;
				temp = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = temp;
			}
		}
		
			
		for(int i= 0; i<arr.length; i++) {
			System.out.println(arr[i]);
		}
		
		System.out.println("네번째 사이클 종료");
		
		
		for(int i=0; i<1; i++) {
			if(arr[i] > arr[i+1]) {
				int temp;
				temp = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = temp;
			}
		}
				
		for(int i= 0; i<arr.length; i++) {
			System.out.println(arr[i]);
		}
		
		System.out.println("다섯번째 사이클 종료");
		
		
	}
}

 

 

 

버블정렬 예제4

package ex06;

public class BubbleEx04 {

	public static void main(String[] args) {
		// 버블정렬
		int[] arr = {50, 40, 30, 10, 8, 5};
		int n =0;
		
		
		for(int k=arr.length-1; k>0; k--) {
			n++;
			for(int i=0; i<k; i++) {
				if(arr[i] > arr[i+1]) {
					int temp;
					temp = arr[i];
					arr[i] = arr[i+1];
					arr[i+1] = temp;
				}
			}
			
			for(int i= 0; i<arr.length; i++) {
				System.out.println(arr[i]);
			}
			
			System.out.println(n+"번째 사이클 종료");
		}
		
	}
}

 

 

실행결과

'자바' 카테고리의 다른 글

강의영상, getter와 setter자동완성  (0) 2022.08.02
절차 지향, 객체 지향  (0) 2022.08.02
요일 구하기, 윤년  (0) 2022.07.28
구구단(2단출력, 9단까지거꾸로 가로)  (0) 2022.07.28
폰트 설정 - 6  (0) 2022.07.28