STUDY_SEONMIN

2750. 수 정렬하기 본문

STUDY/Baekjoon Algorithm

2750. 수 정렬하기

Kululu_ 2021. 7. 22. 10:45

N개의 수가 주어졌을 때 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

*시간복잡도가 O($n^2$)인 정렬 알고리즘 이용 : 선택, 거품, 삽입 정렬

 

 

1. 선택 정렬
https://ko.wikipedia.org/wiki/%EC%84%A0%ED%83%9D_%EC%A0%95%EB%A0%AC

 

선택 정렬 - 위키백과, 우리 모두의 백과사전

선택 정렬(選擇整列, selection sort)은 제자리 정렬 알고리즘의 하나로, 다음과 같은 순서로 이루어진다. 주어진 리스트 중에 최소값을 찾는다. 그 값을 맨 앞에 위치한 값과 교체한다(패스(pass)). 맨

ko.wikipedia.org

 

N = int(input())
numbers = [int(input()) for _ in range(N)]

for i in range(N-1):
    minindex = i
    
    for j in range(i+1,N):
        if numbers[j] < numbers[minindex]:
            minindex = j
    
    numbers[i], numbers[minindex] = numbers[minindex], numbers[i]
    
for number in numbers:
    print(number)

 

 

2. 버블 정렬

https://ko.wikipedia.org/wiki/%EA%B1%B0%ED%92%88_%EC%A0%95%EB%A0%AC

 

거품 정렬 - 위키백과, 우리 모두의 백과사전

무작위 배열수의 거품 정렬 예 거품 정렬( - 整列, 영어: bubble sort, sinking sort)은 두 인접한 원소를 검사하여 정렬하는 방법이다. 시간 복잡도가 O ( n 2 ) {\displaystyle O(n^{2})} 로 상당히 느리지만, 코

ko.wikipedia.org

 

N = int(input())
numbers = [int(input()) for _ in range(N)]

for i in range(N-1):
    for j in range(N-i-1):
        if numbers[j] > numbers[j+1]:
            numbers[j], numbers[j+1] = numbers[j+1], numbers[j]
            
for number in numbers:
    print(number)

 

 

3. 삽입 정렬

https://ko.wikipedia.org/wiki/%EC%82%BD%EC%9E%85_%EC%A0%95%EB%A0%AC

 

삽입 정렬 - 위키백과, 우리 모두의 백과사전

삽입 정렬(揷入整列, insertion sort)은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다. k번째

ko.wikipedia.org

 

N = int(input())
numbers = [int(input()) for _ in range(N)]

for i in range(1,N):
    key = numbers[i]
    j = i-1
    
    while numbers[j] > key and j >= 0:
        numbers[j+1] = numbers[j]
        j = j-1
    numbers[j+1] = key
    
for number in numbers:
    print(number)

 

'STUDY > Baekjoon Algorithm' 카테고리의 다른 글

10989. 수 정렬하기 3  (0) 2021.07.25
2751. 수 정렬하기 2  (0) 2021.07.25
1436. 영화감독 숌  (0) 2021.07.22
1018. 체스판 다시 칠하기  (0) 2021.07.21
7568. 덩치  (0) 2021.07.21
Comments