본문 바로가기
📊 Algorithm/Algorithm 주제별 정리

🧚‍♂️알고리즘🧚‍♂️ - 정렬- 선택 정렬

by 정람지 2023. 1. 10.

선택 정렬

데이터에서  최대나 초소 데이터를 데이터가 나열된 순으로 찾아 가며 선택하는 방법

구현이 복잡/ 시간 복잡도도 비효율적이므로 많이 쓰지 않음

 

최솟값(혹은 최댓값)을 찾고 남은 정렬 부분의 맨 앞 값과 바꾸기

1427번 실버 5

 

1427번: 소트인사이드

첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

슈도코드

A(자릿수별로 구분해 저장한 리스트)
A 리스트 저장

for i를 A 리스트만큼 반복:
    for i를 i+1~ A 리스트 길이만큼 반복:
         현재 범위에서 Max값 찾기
    현재 i의 값과 Max값 중 Max값이 더 크면 swap 수행

A 리스트 출력
from sys import stdin
Nlist = list(stdin.readline())

for i in range (len (Nlist)):
	Max = i
	for j in range (i+1, len(Nlist)):
		if Nlist[j] > Nlist[Max] : # 내림차순 해야 하므로 최댓값을 찾음
			Max = j
	if Nlist[i] < Nlist[Max]:
		temp = Nlist[i]
		Nlist[i] = Nlist[Max]
		Nlist[Max] = temp

for i in range (len (Nlist)) :
	print(Nlist[i], end='')

+

출력 한 줄로 하는 방법엔 (.join) 쓰기와 (end = " ") 쓰기가 있다. 

+

str형 숫자도 대소비교 가능 (ex) "3" <"5")

len은 숫자형 안 되고 문자형만 됨