모두의 파이썬 unit07-선택정렬
일반적인 선택정렬 알고리즘
틀린것
#선택정렬
#입력:리스트a
#출력:없음(입력으로 주어진 a가 정렬됨)
def sel_sort(a):
n=len(a)
for i in range(0,n-1): #0부터 n-2번까지 반복
#i번 위치부터 끝까지 자료값중 최솟값의 위치를 찾음
min_idx=i
for j in range(i+1,n):
if a[j]<a[min_idx]:
min_idx=j
#찾은 최솟값을 i번 위치로
#그러니까 아까처럼 리스트를 하나더 만들지 않고 한개 리스트 안에서 요소들의 위치를 바꿔버리면 된다!!
a[i],a[min_idx]=a[min_idx],a[i]
d=[2,4,5,1,3]
sel_sort(d)
print(d)
정답
#선택정렬
#입력:리스트a
#출력:없음(입력으로 주어진 a가 정렬됨)
def sel_sort(a):
n=len(a)
for i in range(0,n-1): #0부터 n-2번까지 반복
#i번 위치부터 끝까지 자료값중 최솟값의 위치를 찾음
min_idx=i
for j in range(i+1,n):
if a[j]<a[min_idx]:
min_idx=j
#찾은 최솟값을 i번 위치로
#그러니까 아까처럼 리스트를 하나더 만들지 않고 한개 리스트 안에서 요소들의 위치를 바꿔버리면 된다!!
a[i],a[min_idx]=a[min_idx],a[i] #이구문이 if문 밖으로 나와야 한다.
d=[2,4,5,1,3]
sel_sort(d)
print(d)
내림차순 버전
#선택정렬
#입력:리스트a
#출력:없음(입력으로 주어진 a가 정렬됨)
#내림차순정렬
def sel_sort(a):
n=len(a)
for i in range(0,n-1): #0부터 n-2번까지 반복
#i번 위치부터 끝까지 자료값중 최솟값의 위치를 찾음
min_idx=i
for j in range(i+1,n):
if a[j]>a[min_idx]: #<를 >게 수정하면 된다.
min_idx=j
#찾은 최솟값을 i번 위치로
#그러니까 아까처럼 리스트를 하나더 만들지 않고 한개 리스트 안에서 요소들의 위치를 바꿔버리면 된다!!
a[i],a[min_idx]=a[min_idx],a[i]
d=[2,4,5,1,3]
sel_sort(d)
print(d)
추가적으로 궁금했던것
왜 쉽게 설명한 것은 print(함수(리스트))였는데, 일반적인 선택정렬은 print(d)로 끝났을까??
답: 일반 선택정렬에서는 리턴 값이 없음 따라서
#선택정렬
#입력:리스트a
#출력:없음(입력으로 주어진 a가 정렬됨)
#내림차순정렬
def sel_sort(a):
n=len(a)
for i in range(0,n-1): #0부터 n-2번까지 반복
#i번 위치부터 끝까지 자료값중 최솟값의 위치를 찾음
min_idx=i
for j in range(i+1,n):
if a[j]>a[min_idx]: #<를 >게 수정하면 된다.
min_idx=j
#찾은 최솟값을 i번 위치로
#그러니까 아까처럼 리스트를 하나더 만들지 않고 한개 리스트 안에서 요소들의 위치를 바꿔버리면 된다!!
a[i],a[min_idx]=a[min_idx],a[i]
return a #이렇게 return 값을 지정하고
d=[2,4,5,1,3]
print(sel_sort(d))#이렇게 출력하면 값이 나온다!!
Author And Source
이 문제에 관하여(모두의 파이썬 unit07-선택정렬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jsk2342/모두의-파이썬-unit07-선택정렬저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)