개발/👾 PS
[ 버블 정렬 ] 알고리즘
정소은
2023. 3. 17. 23:54
1. 개념
버블 정렬 : 서로 인접한 두 데이터 값을 비교하여 정렬하는 방식
* 시간 복잡도 : O(n²)
버블 정렬 과정
1) 버블 정렬이 필요한 루프 범위를 설정한다 ( 루프 범위에서 정렬이 끝난 숫자 제외 )
2) 루프 범위 내에서 서로 인접한 데이터 값을 비교한다
3) swap 조건( 오름차순 : 앞 > 뒤 / 내림차순 : 앞 < 뒤 )에 부합하면 swap해준다
4) 루프 범위 내에서 swap이 모두 끝나면 루프 범위를 재설정해준다
5) 루프 범위의 크기가 0이 될 때까지 반복해준다
2. 문제 풀이
# 1 수 정렬하기 1 - 백준 2750번
https://www.acmicpc.net/problem/2750
2750번: 수 정렬하기
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
import sys
input = sys.stdin.readline
n = int(input())
numlist = []
for i in range(n):
numlist.append(input())
for i in range(n):
for j in range(n-i-1):
if numlist[j] > numlist[j+1]:
numlist[j],numlist[j+1] = numlist[j+1],numlist[j]
for i in numlist:
print(i)
# 2 버블 소트 - 백준 1377번
https://www.acmicpc.net/problem/1377
1377번: 버블 소트
첫째 줄에 N이 주어진다. N은 500,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 A[1]부터 A[N]까지 하나씩 주어진다. A에 들어있는 수는 1,000,000보다 작거나 같은 자연수 또는 0이다.
www.acmicpc.net
잠시 보류..