def insertion_sort(arr) :
    n = len(arr)

    # arr[0]는 정렬이 완료된 부분으로 치기 때문에 1부터 순회
    # i: 정렬된 부분과 비교할 요소의 인덱스
    for i in range(1,n) :

        # j: i, i-1 , i-2, i-3....
        # i-1: 비교할 요소가 가장 먼저 비교하게 될 정렬된 부분
        # 0~(i-1): 이미 정렬된 부분
        for j in range(i, 0, -1) :
            # 정렬된 요소가 비교할 부분보다 크다면 자리를 바꾼다
            if arr[j-1] > arr[j] :
                arr[j-1], arr[j] = arr[j], arr[j-1]
            # 비교할 요소가 정렬된 요소보다 크다면 아무것도 하지 않고 정렬된 부분의 범위만 늘려주면 된다.
            else :
                break
    return arr


print(insertion_sort([99,200,32,120,2,55]))

'알고리즘' 카테고리의 다른 글

88. Merge Sorted Array  (0) 2024.12.02
병합 정렬  (0) 2024.12.02
슬라이딩 윈도우로 원형 수열의 부분합 구하기  (0) 2024.11.30
하샤드 수  (0) 2024.11.21
시저 암호  (0) 2024.09.02

+ Recent posts