반응형
문제 )
알고리즘)
코드)
1) 교환횟수 카운트하여 버블정렬 향상시키기
N = int(input())
sortArr = []
for i in range(N) :
sortArr.append(int(input()))
#버블정렬 시작!
for i in range(N) :
changeCount = 0 # 교환횟수 변수
for j in range(N-1,i,-1) :
if sortArr[j] < sortArr[j-1] : # 오름차순
sortArr[j], sortArr[j-1] = sortArr[j-1], sortArr[j]
changeCount += 1 # 교환횟수 카운트
if changeCount == 0 : # 교환횟수가 0이면 모두 정렬되었음을 의미하니 버블정렬 종료
break
#출력
for i in range(len(sortArr)) :
print(sortArr[i])
2) 마지막 교환한 인덱스 기억하여 버블정렬 향상시키기
N = int(input())
sortArr = []
for i in range(N) :
sortArr.append(int(input()))
# 버블정렬 시작
for i in range(N) :
lastIndex = 0 # 마지막 교환인덱스 변수
for j in range(N-1,i,-1) :
if sortArr[j] < sortArr[j-1] : #오름차순
sortArr[j], sortArr[j-1] = sortArr[j-1], sortArr[j]
lastIndex = j # 교환이 발생한 인덱스 저장
i = lastIndex # 마지막 교환이 발생한 인덱스부터 정렬하여 버블정렬 향상시키기
# 출력
for i in range(n) :
print(sortArr[i])
반응형
'문제풀이 > Sorting' 카테고리의 다른 글
[python] 백준 2750번 수 정렬하기1 : 병합정렬(merge sort) (0) | 2023.04.07 |
---|---|
[python] 백준 2750번 수 정렬하기1 : 퀵소트(QuickSort) (0) | 2023.04.06 |
[JAVA] 백준 10814번 나이순 정렬 : 단어정렬 (0) | 2021.09.07 |
[JAVA] 백준 11650번 좌표 정렬하기 : 이차원 배열 (0) | 2021.08.16 |
[JAVA] 백준 1427번 소트인사이드 : 내림차순 정렬 (0) | 2021.08.10 |