출처 : 쉽게 배우는 알고리즘 (문병로 저)

 

1. 기본

  - Array 에서 가장 큰 숫자를 맨 뒤로 보낸다.

    단, 이웃한 array를 비교해서 큰값을 다음값과 교환한다.

 

2. 알고리즘 version 1

BubleSort (int A[])

{

for i = N-1 downto 1

for j = 0 to i-1

if (A[j] > A[j+1]) swap(A, j, j+1);

}

 

2. 알고리즘 version 2

 

만약 아래의 비교 구문에서 한번도 swap이 발생하지 않는다면,

이미 정렬되어 있다는 뜻이다. 따라서 그냥 종료한다.

BubleSort (int A[])

{

bool bSorted= true;

for i = N-1 downto 1

for j = 0 to i-1

if (A[j] > A[j+1])

bSorted = false;

swap(A, j, j+1);

if (bSorted)

return;

}

 

3. 알고리즘 version 2구현

	public class BubleSort extends BaseSort {

	@Override
   public void privateSort(int[] A) {
	   boolean bSorted = false;
	   for (int i =A.length-1 ; i >=0; i--){
	   	
	   	for (int j =0 ; j < i-1 ; j++) {
	   		if( A[j] > A[j+1] ) {
	   			bSorted = false;
	   			swap(A, j, j+1);
	   		}
	   	}
	   	
	   	if (bSorted == true)
	   		return; 
	   }
   }

	/**
	 * 
	 */
	public BubleSort() {
		// TODO Auto-generated constructor stub
	}

}

'Programming > Algorithm' 카테고리의 다른 글

기본 알고리즘 - Quick Sort  (0) 2015.01.31
기본 알고리즘 - MergeSort  (0) 2015.01.25
기본 Sort 알고리즘 InsertionSort  (0) 2015.01.21
기본 Sort 알고리즘 - 선택정렬  (0) 2015.01.18
Insertion Sort  (0) 2014.12.20