전공 과목 이수1👨💻/파이썬
정렬알고리즘 구현하기
천숭이
2021. 6. 23. 20:34
< 선택정렬 >
arr=[]
size = int(input())
for i in range(size):
arr.append(int(input()))
for i in range(size-1):
min=i
for j in range(i+1,size):
if arr[j]<arr[min] :
min=j
arr[min],arr[i]=arr[i],arr[min]
print(arr)
< 버블정렬 >
arr=[]
size = int(input())
for i in range(size):
arr.append(int(input()))
for i in range(size-1,0,-1):
for j in range(0,i):
if arr[j]>arr[j+1]:
arr[j],arr[j+1]=arr[j+1],arr[j]
print(arr)
<카운팅정렬>
arr=[] # a
size = int(input())
for i in range(size):
arr.append(int(input()))
length = len(arr)
count = [0]*(length+1) # 입력받은 arr배열의 숫자 빈도 체크 배열
countSum=[0]*(length+1) # 빈도배열을 통한 누적합 배열
for i in range(0,length):
count[arr[i]]+=1
countSum[0]=count[0]
for i in range(1,length+1):
countSum[i]=countSum[i-1]+count[i]
# 최종 정렬된 배열
arr2 = [0]*(length+1)
for i in range(length-1,-1,-1): #거꾸로
arr2[countSum[arr[i]]]=arr[i]
countSum[arr[i]]-=1
result=""
for i in range(1,length+1):
result += str(arr2[i])+" "
print(result)