알고리즘

삽입 정렬

쫑글이 2024. 12. 2. 13:14

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]))