선택 정렬

반응형
728x90
반응형

선택 정렬

처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복한다.

 

 

구현 예시

0) 정렬할 데이터

https://freedeveloper.tistory.com/274?category=888096

 

1) 0번째 인덱스인 '7'을 대상으로, 1번째 ~ 마지막까지의 인덱스의 원소 중 작은 값을 선택한다.

https://freedeveloper.tistory.com/274?category=888096

 

2) 1번째 인덱스인 '5'를 대상으로, 2번째 ~ 마지막까지의 인덱스의 원소 중 작은 값을 선택한다.

https://freedeveloper.tistory.com/274?category=888096

 

3) 2번째 인덱스인 '9'를 대상으로, 3번째 ~ 마지막까지의 인덱스의 원소 중 가장 작은 값을 선택한다.

https://freedeveloper.tistory.com/274?category=888096

 

4) 이러한 과정을 반복하면 오름차순으로 정렬된다.

https://freedeveloper.tistory.com/274?category=888096

 

 

예제 코드

import java.util.stream.IntStream;

public class M9_선택정렬 {
    public static void main(String[] args) {
        int n = 10;
        int[] arr = {7, 5, 9, 0, 3, 1, 6, 2, 4, 8};

        for (int i = 0; i < n; i++) {
            int min_index = i;  // 가장 작은 원소의 인덱스

            for (int j = i + 1; j < n; j++) {
                if (arr[min_index] > arr[j]) {
                    min_index = j;
                }
            }

            // swap
            int temp = arr[i];
            arr[i] = arr[min_index];
            arr[min_index] = temp;
        }

        IntStream.range(0, n).mapToObj(i -> arr[i] + " ").forEach(System.out::println);
    }
}

 

반응형

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

퀵 정렬  (0) 2022.03.07
삽입정렬  (0) 2022.03.07
다이나믹 프로그래밍  (0) 2022.03.07
이진 탐색 (Binary Search)  (0) 2022.03.07
BFS (Breadth-First Search)  (0) 2022.03.07

Designed by JB FACTORY