뭉지(moonz)
작은 발자국들의 위대한 여정
뭉지(moonz)
  • All (202)
    • Test Code (4)
    • 백엔드 개발하며 작성한 (27)
      • Spring (17)
      • 데이터베이스 (7)
      • 기억할 내용 (3)
    • 언어 (53)
      • Java (25)
      • node.js (7)
      • Python (21)
    • 클라우드 (6)
    • Algorithm & Data Structure (51)
      • 개념 (15)
      • 문제 풀이 (36)
    • 유용한 모든 것 (16)
    • monologue (7)
      • 업무 노트 (1)
      • 관리 로그 (0)
      • 내 이야기 공책 (6)
    • Project (2)
    • TroubleShooting (8)
    • 지식 (18)
      • Machine Learning (6)
      • Review (7)
      • Web (5)
    • Computer Science (5)

블로그 메뉴

  • 홈
  • 태그

인기 글

최근 글

최근 댓글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
뭉지(moonz)

작은 발자국들의 위대한 여정

Algorithm & Data Structure/개념

선택 정렬

2021. 8. 15. 16:49
반응형

가장 최소인 값을 맨 앞 값이랑 바꿔주는 "선택" 정렬

 

 

패턴 파악

데이터 3개  (턴 2번, 1. 최솟값과 비교 2번 2. 최솟값과 비교 1번)

1. 턴 한번

5 4 2
2 4 5

 

데이터 4개  (턴 3번, 1. 최솟값과 비교 3번 2. 최솟값과 비교 2번 3. 최솟값과 비교 1번)

5 4 3 1
1 4 3 5
1 3 4 5

 

파악되는 중요 패턴은 다음과 같다.

1. 매 턴마다 앞 자리가 정해지면서 반복 횟수가 줄어든다.

2. (매 반복에서) 맨 앞 인덱스의 값과 최솟값을 바꾼다.

 

 

psudo 코드 

for i in range( len(data) -1 ):
   min = i

   for j in range( i+1, len(data) ) :
      if data[min] > data[j]:
          min = j

   swap(data[min], data[j])

 

 

파이썬 코드

def selection_sort(data):
    for stand in range(len(data) - 1):
        min = stand # 최솟값의 기준이 될 index
        for idx in range(stand + 1, len(data)):
            if data[min] > data[idx]:
                min = idx
        data[min], data[stand] = data[stand], data[min]
        
    return data
import random

data_list = random.sample(range(100), 10)
selection_sort(data_list)

 

 

시간 복잡도

반복문이 2개인데, N만큼 반복하기 때문에, O(N^2).

반응형
저작자표시 (새창열림)

'Algorithm & Data Structure > 개념' 카테고리의 다른 글

[Concept] 재귀 용법  (0) 2021.08.17
삽입 정렬  (0) 2021.08.15
버블 정렬  (0) 2021.08.15
[Concept] 해쉬 테이블 (Hash Table)  (0) 2021.08.10
[Concept] 시간 복잡도  (0) 2021.08.05
    'Algorithm & Data Structure/개념' 카테고리의 다른 글
    • [Concept] 재귀 용법
    • 삽입 정렬
    • 버블 정렬
    • [Concept] 해쉬 테이블 (Hash Table)
    뭉지(moonz)
    뭉지(moonz)
    제가 깨달은 것을 정리하는 공간입니다. 🧡

    티스토리툴바