본문 바로가기
알고리즘

[JAVA] 선택 정렬(Selection Sort)

by PEKAH 2021. 12. 6.

선택 정렬은 이해하기 쉽지만 빠른 알고리즘은 아니다.

먼저 전체 배열에서 가장 작은 요소를 찾고 그 요소를 배열의 첫 번째 요소와 교환한다.
다음으로 배열 A의 두 번째 요소부터 마지막 요소까지 확인하여 가장 작은 요소를 찾은 후 그 요소를 두 번째 요소와 교환한다.
이 과정을 배열 전체가 정렬될 때까지 (n - 1)번 반복한다.

 

시간복잡도 O(N^2)

 

알고리즘

SelectionSort(A[0 .. n-1])

for (i = 0; i < n - 1; i++) {
    // 배열의 가장 작은 요소 찾기
    min = i
    for (j = i; j < n; j++)
        if (A[j] < A[min]) min = j
        
    A[i]와 A[min] 교환
}

 

JAVA

public class SelectionSort {
	public static void main(String[] args) {
		int[] intArray = {89, 45, 67, 92, 39, 74, 26, 90};
		int i;
		
		System.out.print("정렬 전 배열: ");
		
		for (i = 0; i < intArray.length; i++) {
			System.out.print(intArray[i] + " ");
		}
		
		selectionSort(intArray);
		
		System.out.print("\n정렬 후 배열: ");
		
		for (i = 0; i < intArray.length; i++) {
			System.out.print(intArray[i] + " ");
		}
	}
	
	public static void selectionSort(int[] A) {
		int i, j, min, temp;
		int n = A.length;
		
		for (i = 0; i < n - 1; i++) {
			min = i;
			for (j = i; j < n; j++) {
				if (A[j] < A[min]) min = j;
			}
			
			temp = A[min];
			A[min] = A[i];
			A[i] = temp;
		}
	}
}

 

 

 

 

 

'알고리즘' 카테고리의 다른 글

[JAVA] 힙 정렬 (Heap Sort)  (0) 2021.12.07
[JAVA] 삽입 정렬(Insertion Sort)  (0) 2021.12.07
[JAVA] 이진 탐색 (Binary Search)  (0) 2021.12.06
[JAVA] 자연수 n의 계승(factorial) 계산  (4) 2021.12.06
[JAVA] 누계 계산  (0) 2021.12.05

댓글