버블 정렬 [ bubble sort ]

 

일반적으로 사용되는 분류 알고리즘(sorting algorithm)이지만, 알고리즘이 수중(水中)의 「거품」과 움직임이 유사하기 때문에 이러한 이름이 붙여졌다. 이 말은 인접한 레코드의 키를 비교해서 그 결과 순서화되어 있지 않으면 교환하는 방식이다.

 

…네이버 지식백과 中

 

버블정렬은 인접한 두 값을 비교해서 정렬해주는 정렬방식입니다.

다음과 같은 lotto배열에 값이 저장되어 있습니다.

int lotto[]={10,9,8,6,7,5};
이 배열의 값을 버블정렬로 정렬하게 되면 다음과 같은 순서로 정렬되게 됩니다.

10 9 8 6 7 5
9 8 6 7 5 10   - 1회전
8 6 7 5 9 10   - 2회전
6 7 5 8 9 10   - 3회전
6 5 7 8 9 10   - 4회전
5 6 7 8 9 10   - 5회전

 

6개의 숫자를 정렬하는데에는 5회전이 필요하게 됩니다.

다음 코드는 1회전의 코드입니다.

		for(int i=0;i<LOTTO.LENGTH-1;I++){ if(lotto[i]>lotto[i+1]){	//두 값을 비교하여 swap하는 부분
				temp=lotto[i];
				lotto[i]=lotto[i+1];
				lotto[i+1]=temp;
			}
		}

 

이러한 회전을 총 5번(배열총길이-1) 해야합니다.

 

lotto[]={10,9,8,6,7,5} 배열 → 버블정렬을 이용해서 오름차순 정렬한 프로그램

class BubbleSortEx1 {

	public static void main(String[] args) {
		int lotto[] = { 10, 9, 8, 6, 7, 5 };
		int temp = 0;

		for (int i = 0; i < lotto.length; i++) {
			System.out.print(lotto[i] + " ");
		}
		System.out.println("\n------Bubble Sort------");
		for (int j = 0; j < lotto.length - 1; j++) {
			for (int i = 0; i < lotto.length - 1; i++) {

				if (lotto[i] > lotto[i + 1]) {
					temp = lotto[i];
					lotto[i] = lotto[i + 1];
					lotto[i + 1] = temp;
				}
			}
		}
		for (int i = 0; i < lotto.length; i++) {
			System.out.print(lotto[i] + " ");
		}

	}

}

 

 

'2013 > Java' 카테고리의 다른 글

[Java] 로또(Lotto) 프로그램(1)  (0) 2013.11.11
[Java] 멀티스레드 프로그램(1)  (0) 2013.11.08
[Java] 버블정렬(1)  (0) 2013.11.08
[Java] Radom클래스(1)  (0) 2013.11.08
[Java] StringTokenizer 클래스(1)  (0) 2013.11.07
[Java] 파일 입출력에 사용되는 자바 클래스들(3)  (0) 2013.11.05