본문 바로가기
코딩/알고리즘

[정렬] 삽입정렬 알고리즘

by 미생22 2023. 1. 31.
728x90

정렬되어 있는 자료 배열과 비교해서, 정렬 위치를 찾는다.

 

[5, 10, 2, 1, 0] -> 리스트 앞의 5, 10이 정렬되어있으므로 2를 5, 10 앞으로 가져온다

[2, 5, 10, 1, 0] -> 2, 5, 10이 정렬되어 있으므로 1을 2앞으로 가져온다

[1, 2, 5, 10, 0] -> 1, 2, 5, 10이 정렬되어 있으므로 0을 1앞으로 가져온다

[0, 1, 2, 5, 10]

 

 

ascending

nums = [5, 10, 2, 1, 0]

for i in range(1, len(nums)):
    j = i - 1
    val = nums[i]
    
    while nums[j] > val and j >= 0:
        nums[j+1] = nums[j]
        j -= 1
        
    nums[j+1] = val
    
    print(f'nums : {nums}')

 

decending

for문의 부등호 방향만 바꿔주면 됨

nums = [5, 10, 2, 1, 0]

for i in range(1, len(nums)):
    j = i - 1
    val = nums[i]
    
    while nums[j] < val and j >= 0:
        nums[j+1] = nums[j]
        j -= 1
        
    nums[j+1] = val
    
    print(f'nums : {nums}')
728x90

'코딩 > 알고리즘' 카테고리의 다른 글

[비교] 최댓값, 최솟값 알고리즘  (0) 2023.02.06
[정렬] 선택정렬 알고리즘  (0) 2023.01.31
[정렬] 버블정렬 알고리즘  (0) 2023.01.27
[순위] 순위 알고리즘  (0) 2023.01.26
[검색] 이진검색 알고리즘  (0) 2023.01.20