본문 바로가기

Algorithm/정렬과 탐색

버블 정렬 (Bubble Sort)

버블 정렬 (Bubble Sort)

  • 레코드가 순서대로 되어 있지 않으면 인접한 항목 교환

버블 정렬 과정

  • a[0]과 a[1]을 비교하여 정렬 순서에 맞도록 교환
  • a[1]과 a[2]을 비교하여 정렬 순서에 맞도록 교환
  • a[n-2] 와 a[n-1]을 비교하여 정렬 순서에 맞도록 교환
  • 제일 큰 원소가 배열의 n-1 위치로 이동 (1라운드)
  • 배열의 처음부터 다시 비교 정렬

버블 정렬 비교 횟수

  • 항목의 개수 N이면 (N-1) + (N-2) + … + 1
  • 수학 공식 : N(N-1) / 2

버블 정렬 구현 예시

package sort;

public class BubbleSortEx {

	public static void main(String[] args) {
		int[] arr = {5, 2, 8, 3, 1};
		bubbleSort(arr);
		
		for(int i=0; i<arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
	}
	
	static void bubbleSort(int[] arr) {
		//인접한 2개 요소를 교환
		// 2개의 값을 교환할 경우 변수에 값을 저장하는 순간 이전 값은 없어짐
		// 이전 값을 보존하기 위해 임시 장소 필요
		int temp;
		//총 라운드 : 배열크기 - 1번 진행
		for(int i=1; i<arr.length; i++) {
			// 각 라운드별 비교횟수 : 배열크기-라운드 횟수
			for(int j=0; j<arr.length-i; j++) {
				if(arr[j] > arr[j+1]) {
					temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
	}
}

'Algorithm > 정렬과 탐색' 카테고리의 다른 글

2원 합병 정렬  (0) 2021.12.01
쉘 정렬 (Shell Sort)  (0) 2021.12.01
정렬 (Sort)  (0) 2021.12.01
계수 정렬 (Counting Sort)  (0) 2021.11.29
퀵 정렬 (Quick Sort)  (0) 2021.11.26