SseopE
SseopE
SseopE
전체 방문자
오늘
어제
  • 분류 전체보기 (44)
    • Programming (3)
      • JAVA (3)
    • Spring (7)
      • 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (5)
      • Spring 공부 (0)
    • Infra (6)
      • Docker (3)
      • Kubernetes (3)
      • Kafka (0)
    • Machine Learning (2)
      • Scikit-Learn (1)
      • MLOps (1)
      • BentoML (0)
      • Kubeflow (0)
    • OS (2)
      • Linux (2)
    • Algorithm (23)
      • Sorting (7)
      • BOJ (15)
      • Programmers (0)
      • Data Structure (1)
    • 특강 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • TransformMixin
  • 1541번
  • 도커
  • Spring
  • scikit learn
  • container
  • 1931번
  • java
  • 백준
  • Kubernetes
  • BaseEstimator
  • Spring boot
  • 자바
  • 2580번
  • resource
  • 2981번
  • 스웜 모드
  • boj
  • docker
  • 2275번

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
SseopE

SseopE

선택 정렬 (Selection Sort)
Algorithm/Sorting

선택 정렬 (Selection Sort)

2022. 2. 14. 18:38

선택 정렬

- 이름 말 그대로 자리를 선택하고 해당 자리에 들어올 값을 찾아서 넣어주는 정렬

- 버블 정렬과 헷갈릴 수 있으니 조심

- 버블 정렬과 다른 것은 먼저 자리를 선정한다는 점

 

정렬 알고리즘 (오름차순)

출처 : https://gmlwjd9405.github.io/2018/05/06/algorithm-selection-sort.html

1. 배열의 자리를 선정한다. (보통 0번째부터 순서대로)

2. 0번째 자리에 들어갈 값의 인덱스을 찾는다. (오름차순 기준 최솟값)

3. 배열을 쭉 돌면서 찾았으면 이제 자리를 바꾼다. 

4. n 차례 반복했으면 앞의 n 개에는 순서대로 알맞는 값이 쌓이게 된다.

5. 따라서 배열을 쭉 순회하면서 최소값을 찾을때는 n+1 부터 찾으면 된다.

6. 반복.

 

JAVA Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.stream.IntStream;

public class SelectionSort {
    public static void selectionSort(int arr[]) {
        int minIdx, tmp;
        for (int i = 0; i < arr.length-1; i++) {
            minIdx=i;
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[minIdx] > arr[j]) {
                    minIdx = j;
                }
            }

            tmp = arr[minIdx];
            arr[minIdx] = arr[i];
            arr[i] = tmp;
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int _loop = Integer.parseInt(br.readLine());

        int arr[] = new int[_loop];
        for (int i = 0; i < _loop; i++) {
            arr[i] = Integer.parseInt(br.readLine());
        }


        IntStream.range(0, arr.length).map(i -> arr[i]).forEach(System.out::print);
        System.out.println();

        selectionSort(arr);

        IntStream.range(0, arr.length).map(i -> arr[i]).forEach(System.out::print);
        System.out.println();
    }
}

 

 

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

카운팅 정렬 (Counting Sort)  (0) 2022.02.14
삽입 정렬 (Insertion Sort)  (0) 2022.02.14
버블 정렬 (Bubble Sort)  (0) 2022.02.14
힙 정렬 (Heap Sort)  (0) 2022.02.12
병합 정렬(Merge Sort)  (0) 2022.02.12
    'Algorithm/Sorting' 카테고리의 다른 글
    • 카운팅 정렬 (Counting Sort)
    • 삽입 정렬 (Insertion Sort)
    • 버블 정렬 (Bubble Sort)
    • 힙 정렬 (Heap Sort)
    SseopE
    SseopE

    티스토리툴바