코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (271)
    • 개발 (2)
    • Java (1)
    • 스프링 (28)
    • JPA (11)
    • Git (3)
    • 알고리즘 (160)
      • 백준 (132)
      • 프로그래머스 (8)
      • SWEA (20)
    • 토이 프로젝트 (14)
      • 간단한 Springboot CRUD (1)
      • 게시판 프로젝트 (13)
    • 알고리즘 개념정리 (8)
    • 오류 해결 (13)
    • 보류 (0)
    • AWS (5)
    • 트러블 슈팅 (0)
    • 회고 (3)
    • CS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
코딍코딍

코딩기록

알고리즘 개념정리

선택 정렬

2022. 7. 31. 17:22

선택 정렬

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

시간 복잡도: O(n^2)

 

 

선택 정렬 동작 과정

0) 정렬할 데이터를 준비

1) 처리되지 않은 데이터 중 가장 작은 값인 '0'을 선택하여 가장 앞의 '7'과 바꾼다.

2) 처리되지 않은 데이터 중 가장 작은 값인 '1'을 선택하여 가장 앞의 '5'과 바꾼다.

3) 처리되지 않은 데이터 중 가장 작은 값인 '2'를 선택하여 가장 앞의 '9'과 바꾼다.

4) 처리되지 않은 데이터 중 가장 작은 값인 '3'을 선택하여 가장 앞의 '7'과 바꾼다.

5) 이러한 과정을 반복하면 다음과 같이 정렬이 된다.

 

 

구현 코드

import java.util.*;
 
public class Main {
    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;
        }
 
        for(int i = 0; i < n; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}

'알고리즘 개념정리' 카테고리의 다른 글

퀵 정렬  (0) 2022.08.01
삽입 정렬  (0) 2022.08.01
BFS (Breadth-First Search)  (0) 2022.07.30
DFS (Depth-First Search)  (0) 2022.07.30
큐 (Queue)  (0) 2022.07.29
    '알고리즘 개념정리' 카테고리의 다른 글
    • 퀵 정렬
    • 삽입 정렬
    • BFS (Breadth-First Search)
    • DFS (Depth-First Search)
    코딍코딍
    코딍코딍
    ㅎ2

    티스토리툴바