[알고리즘][python] 정렬 알고리즘 - 선택정렬

2024. 9. 25. 09:19·Study/알고리즘

정렬(sorting) : 데이터를 특정한 기준에 따라 순서대로 나열.

 

선택 정렬 

- 처리되지 않은 데이터 중에서 가장 작은 데이터 선택해 맨 앞 데이터와 바꾸기

 

1. 선택 정렬 작동 원리 ( 예시 )

[64, 25, 12, 22, 11]

 

1단계: 배열 전체에서 가장 작은 값 찾기

 11을 배열의 첫 번째 요소인 64와 교환

 [11, 25, 12, 22, 64]

 

2단계: 두 번째 요소 이후에서 가장 작은 값 찾기

 12를 두 번째 위치에 있는 25와 교환

 [11, 12, 25, 22, 64]

 

3단계: 세 번째 요소 이후에서 가장 작은 값 찾기

 22를 세 번째 위치에 있는 25와 교환

 [11, 12, 22, 25, 64]

 

4단계: 네 번째 요소 이후에서 가장 작은 값 찾기

 이미 자리에 있기 때문에 교환은 필요 없음

 [11, 12, 22, 25, 64]

 

5단계: 마지막 요소는 자동으로 정렬된 상태

 [11, 12, 22, 25, 64]

 

2. 선택 정렬 소스코드 (python)

def selection_sort(arr):
    for i in range(len(arr)):
        min_idx = i
        for j in range(i+1, len(arr)):
            if arr[j] < arr[min_idx]:
                min_idx = j
        arr[i], arr[min_idx] = arr[min_idx], arr[i] #위치를 바꾸는 스와프
    return arr

# 예시 실행
arr = [64, 25, 12, 22, 11]
sorted_arr = selection_sort(arr)
print(sorted_arr)  # [11, 12, 22, 25, 64]

 

 

 

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

[알고리즘] DFS/BFS  (1) 2024.10.14
'Study/알고리즘' 카테고리의 다른 글
  • [알고리즘] DFS/BFS
#코딩 공부
#코딩 공부
tildacoding 코딩 공부
  • #코딩 공부
    tildacoding
    #코딩 공부
  • 전체
    오늘
    어제
  • 글쓰기 관리자
  • Personal

    • 홈
    • 태그
    • 방명록
  • link

    • GITHUB
    • 분류 전체보기 (51)
      • Dev (12)
        • python (0)
        • 웹크롤링 (2)
        • 머신러닝 (3)
        • 딥러닝 (4)
        • 언어지능 딥러닝 (2)
        • SQL (1)
        • Spring (0)
      • 코딩테스트 (16)
        • 백준 (3)
        • 프로그래머스 (7)
        • 기타 문제 (2)
        • 코딩테스트를 위한 정리 (4)
      • Study (4)
        • 알고리즘 (2)
        • 자료구조 (2)
      • 대외활동 (18)
        • 에이블스쿨 (18)
        • 공모전 (0)
  • 공지사항

    • 루틴 skrrrrr
  • 인기 글

  • 태그

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
#코딩 공부
[알고리즘][python] 정렬 알고리즘 - 선택정렬
상단으로

티스토리툴바