개발/👾 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

 

잠시 보류..