[용어정리] 선택정렬(Selection Sort), 버블정렬(Bubble Sort)

SW/Java

2020. 9. 11. 13:00

# 정렬 알고리즘

- selection sort(선택정렬) 

  배열 중에 가장 작은 원소들을 왼쪽부터 채워나가면서 숫자를 정렬하는 방법

  각 회전(Pass)과정이 끝날때마다 앞쪽부터 정렬된 원소로 채워진다.

 

선택 정렬(Selection Sort)

- 주어진 데이터 중 최소값을 찾음 - 최소값을 맨 앞에 위치한 값과 교환 - 정렬된 데이터를 제외한 나머지 데이터를 같은 방법으로 정렬 - 시간복잡도 : O(n^2)  [1회전]  [2회전]  [3회전]  [4회전]

hahahoho5915.tistory.com

ex) 

public class SelectionSort {

	public static void main(String[] args) {
		int[] num = {5, 4, 1, 3, 2};
		
		for(int i=0;i<num.length-1;i++) {
			for(int j=i+1;j<num.length;j++) {
				if(num[i]>num[j]) {
					int temp = num[i];
					num[i] = num[j];
					num[j] = temp;
				}
			}
		}
		for(int i=0;i<num.length;i++)
			System.out.print(num[i] + " ");
	}
}

 

- bubble sort(버블정렬)

  인접한 두개의 원소를 비교하여 가장 큰 원소가 마지막자리로 오게해서 숫자를 정렬하는 방법

  각 회전(Pass)과정이 끝날때마다 정렬은 뒤에서부터 하나씩 완료된다.

 

버블 정렬(Bubble Sort)

- 두 인접한 원소를 검사하여 정렬하는 방법 - 시간복잡도 : O(n^2) [1회전] [2회전] [3회전] - 세번의 회전에 걸쳐 정렬은 완료되었지만 프로그램은 남은 데이터의 비교연산을 계속 처리함. - 정렬은

hahahoho5915.tistory.com

ex)

public class BubbleSort {
	public static void main(String[] args) {
		int[] num = {5, 4, 1, 3, 2};
		
		for(int i=0;i<num.length-1;i++) {
			for(int j=0;j<num.length-1-i;j++) {
				if(num[j]>num[j+1]) {
					int temp = num[j];
					num[j] = num[j+1];
					num[j+1] = temp;
				}
			}
		}
		
		for(int i=0;i<num.length;i++)
			System.out.print(num[i] + " ");
	}
}

 

// 최종적인 결과는 오름차순인 경우 두 정렬 모두 동일하다.

728x90